2016-09-29 3 views
2

他の列の値で欠損値を1列に記入したいと思います。python - Pandas - FillNaと同様の列を持つ非ヌル行

私は、各行をループすることは非常に悪い習慣であり、一度にすべてを行う方がよいと読んでいますが、fillnaメソッドを使ってそれを行う方法を見つけることができませんでした。検索を実行します

データ

Day Cat1 Cat2 
1 cat ant 
2 dog elephant 
3 cat giraf 
4 NaN ant 

データ

Day Cat1 Cat2 
1 cat ant 
2 dog elephant 
3 cat giraf 
4 cat ant 

答えて

1

後あなたはfillnaを使用することができますし、Cat2にインデックスを設定して、mapを呼び出し、NaN行せずにDFを渡す前に:

In [108]: 
df['Cat1'] = df['Cat1'].fillna(df['Cat2'].map(df.dropna().set_index('Cat2')['Cat1'])) 
df 

Out[108]: 
    Day Cat1  Cat2 
0 1 cat  ant 
1 2 dog elephant 
2 3 cat  giraf 
3 4 cat  ant 

だからここに私はNaN行を削除し、Cat2にインデックスを設定し、この上mapを呼び出すことによって、それはCAT1 values where Cat2`がmapの結果である。ここ

に一致するルックアップします:

In [112]: 
df['Cat2'].map(df.dropna().set_index('Cat2')['Cat1']) 

Out[112]: 
0 cat 
1 dog 
2 cat 
3 cat 
Name: Cat2, dtype: object 
関連する問題