2017-02-24 29 views
1

我想要在d1和d2中添加列d的輸出,其中a b c相同(如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 

合併兩個數據幀和把獲得的柱d其中A B C是一樣的。

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)。因此,如果我將結果添加到第三個DataFrame中,則無法找到密鑰a b c。 –

+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 
相關問題