2017-02-24 10 views
1

列をdとd1に追加し、b2cが同じである(groupbyなど)出力を取得しようとしています。例えば類似の列に基づいてデータフレームに列を追加する

d1 = pd.DataFrame([[1,2,3,4]],columns=['a','b','c','d']) 

d2 = pd.DataFrame([[1,2,3,4],[2,3,4,5]],columns=['a','b','c','d']) 

について

私は

a b c d 
0 1 2 3 8 
1 2 3 4 5 

は、2つのデータフレームをマージし、B cは同じで得られたカラムdを追加するなど、出力を取得したいのです。

d1.add(d2)またはraddは同様に相互に再度追加することができるデータフレームでなければならない私のすべての列

溶液の凝集体が得られます。

何か助けていただければ幸いです。

答えて

2

あなたはset_index最初に使用することができます。私はそれが再帰ループに追加することがしたかった

print (d2.set_index(['a','b','c']) 
     .add(d1.set_index(['a','b','c']), fill_value=0) 
     .astype(int) 
     .reset_index()) 

    a b c d 
0 1 2 3 8 
1 2 3 4 5 
+0

を。列名は少しオフになっています。 a b cは内側の列として現れ、形状は(2,1)であるように見える。したがって、結果を3番目のDataFrameに追加すると、キーを見つけることができません。 –

+0

リセットインデックスをやっていないと思います。私の悪い。 –

+0

問題ありません、受け入れてくれてありがとう、幸運! – jezrael

-1
df = pd.concat([d1, d2]) 
df.drop_duplicates() 

    a b c d 
0 1 2 3 4 
1 2 3 4 5 
関連する問題