2017-04-11 80 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)