2017-09-29 62 views

回答

0

你可以也使用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已驗證。

+0

好的,但是'loc'這裏是多餘的,你怎麼看? – jezrael

+0

@ s900n我建議接受jezrael的答案,因爲它涵蓋更多選項,我的這裏是完成選項.. – MedAli

+1

@jezrael你是對的,但我覺得'df.loc'更具可讀性。 – MedAli

5

使用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 S:

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

一個與'where'即'df.where(〜(DF [ 'B']> 5))' – Dark

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