繁体   English   中英

Python pandas.DataFrame:根据条件制作整行NaN

[英]Python pandas.DataFrame: Make whole row NaN according to condition

我想根据一列的条件使整行 NaN 。 例如,如果B > 5 ,我想让整行 NaN。

未处理的数据框如下所示:

   A  B
0  1  4
1  3  5
2  4  6
3  8  7

使整行 NaN,如果B > 5

     A    B
0  1.0  4.0
1  3.0  5.0
2  NaN  NaN
3  NaN  NaN

谢谢。

使用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))

你也可以使用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是有效的。

或者使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM