2016-11-24 4 views
2

私はパンダを初めて使用しています。私がやりたい何データフレーム1の列AのNaN値に、条件に基づいてデータフレーム2の対応する値を設定します。

Df1 
Address   Zip   Parcel Number 
123 Main St  12345   1234-567-890 
456 Broadway Ave 55555   NaN 

Df2 
Address   Zip   Parcel Number 
456 Main St  66666   5555-555-555 
456 Broadway Ave 55555   7777-777-777 

は次のとおりです:私は2つのデータフレームを持って DF1のアドレス&郵便番号欄がDF2のアドレス&郵便番号の列に等しい場合は、小包にNaN値を移入しますdf1からdf2までの対応するパーセル番号の値を持つdf1の数値列。

助けていただけたら幸いです!

答えて

3

これはcombine_firstと呼ばれます。最初の[「住所」、「郵便番号」]上のインデックスあなたのデータフレーム:

Df1.set_index(['Address', 'Zip'], inplace=True) 
Df2.set_index(['Address', 'Zip'], inplace=True) 
Df1.combine_first(Df2) 

あなたはこれは参考になりました、ありがとう

+0

列のアドレスと郵便番号を保持したい場合は、結果のデータフレームをreset_indexすることができます!私はこのソリューションを正確に実装していませんでしたが、正しい方向に私を指摘しました。私は、「Address」と「Zip」列を結合し、2つのデータフレームをマージした新しいデータ列を新しいデータ列に作成することでした。newdf = pd.merge(df1、df2、on =プロパティ住所Zip '、how =' inner ')。マージ後、不足している小包番号を記入するために.fillnaを使用しました。 –

関連する問題