Python Pandas Dataframe:根据条件制作整行NaN

时间:2017-09-29 12:09:48

标签: python pandas dataframe

我想根据基于列的条件制作整行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

谢谢。

3 个答案:

答案 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

谢谢Bharath shetty

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