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

s90*_*00n 5 python dataframe pandas

我想根据基于列的条件制作整行NaN例如,如果B> 5我想要整行NaN:

未处理的数据帧:

'A''B'
 1  4
 3  5
 4  6
 8  7 
Run Code Online (Sandbox Code Playgroud)

如果B> 5,则整行NaN

'A''B'
 1  4
 3  5
 NaN NaN
 NaN NaN
Run Code Online (Sandbox Code Playgroud)

谢谢.

jez*_*ael 7

用于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
Run Code Online (Sandbox Code Playgroud)

或者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
Run Code Online (Sandbox Code Playgroud)

谢谢Bharath shetty:

df = df.where(~(df['B']>5))
Run Code Online (Sandbox Code Playgroud)

  • 一个带有 `where` 即 `df.where(~(df['B']>5))` (2认同)

Moh*_*OUI 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
Run Code Online (Sandbox Code Playgroud)

在人类语言df.loc[df.B > 5, :] = np.nan中可以翻译为:

分配np.nan给条件有效:的数据框 ( df) 的任何列 ( ) df.B > 5