[英]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.