我想根据基于列的条件制作整行NaN例如,如果B> 5我想整行NaN:
未处理的数据框:
'A''B'
1 4
3 5
4 6
8 7
如果B> 5
,则整行NaN'A''B'
1 4
3 5
NaN NaN
NaN NaN
谢谢。
答案 0 :(得分:6)
使用boolean indexing
为每个条件分配值:
df[df['B'] > 5] = np.nan
print (df)
A B
0 1.0 4.0
1 3.0 5.0
2 NaN NaN
3 NaN NaN
或DataFrame.mask
默认添加NaN
条件:
df = df.mask(df['B'] > 5)
print (df)
A B
0 1.0 4.0
1 3.0 5.0
2 NaN NaN
3 NaN NaN
df = df.where(~(df['B']>5))
答案 1 :(得分:2)
您也可以使用df.loc[df.B > 5, :] = np.nan
示例
In [14]: df
Out[14]:
A B
0 1 4
1 3 5
2 4 6
3 8 7
In [15]: df.loc[df.B > 5, :] = np.nan
In [16]: df
Out[16]:
A B
0 1.0 4.0
1 3.0 5.0
2 NaN NaN
3 NaN NaN
人类语言df.loc[df.B > 5, :] = np.nan
中的可以翻译为:
将
np.nan
分配给数据框(:
)的任何列(df
) 条件df.B > 5
有效。
答案 2 :(得分:0)
或使用reindex
df.loc[df.B<=5,:].reindex(df.index)
Out[83]:
A B
0 1.0 4.0
1 3.0 5.0
2 NaN NaN
3 NaN NaN