2017-04-11 81 views
1

我想填充一些行與0在某些條件適用。我想:熊貓 - fillna與行子集

df.loc[:,(df.Available == True) & (df.Intensity.isnull())].Intensity = df.loc[(df.Available == True) & (df.Intensity.isnull())].Intensity.fillna(0, inplace=True) 

這並不BC IndexingError: Unalignable boolean Series key provided工作,但是當我只是嘗試

df.loc[(df.Available == True) & (df.Intensity.isnull())].Intensity = df.loc[(df.Available == True) & (df.Intensity.isnull())].Intensity.fillna(0, inplace=True) 

即註冊爲更新的副本。我怎樣才能做到這一點?謝謝!

回答

2

我想你甚至不需要fillna如果您已經在處理Intensity爲空的行。

df.loc[(df.Available) & (df.Intensity.isnull()), 'Intensity'] = 0 

或者你可以做

df.loc[df.Available, 'Intensity'] = df.loc[df.Available, 'Intensity'].fillna(0) 
1

IIUC:

df.query('Available == True')['Intensity'].fillna(0) 
+1

您必須分配回來。 – piRSquared

1

我打破了這種成幾行以提高可讀性

a = df.Available == True 
b = df.Intensity.isnull() 
df.loc[(a & b), 'Intensity'] = 0 

然而,這也應該工作

a = df.Available == True 
b = df.Intensity.isnull() 
df.Intesity *= (a & b)