2017-04-11 5 views
1

ある条件が適用される0でいくつかの行を埋めようとしています。私がしようとしている:Pandas - 行のサブセットを持つfillna

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

これはIndexingError: Unalignable boolean Series key provided bcの動作しませんが、私はただのコピーを更新するように登録

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

をしようとします。これどうやってするの?ありがとうございました!

答えて

2

を動作するはずです、

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

しかし、読みやすくするために複数の行にこれを破りましたIntensityがnullの行をすでに処理している場合。

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

は、私は、これはまた、私はあなたもfillnaを必要としないと思う

a = df.Available == True 
b = df.Intensity.isnull() 
df.Intesity *= (a & b) 
関連する問題