2013-03-28 71 views
2

我試圖加入兩個數據框在熊貓有以下行爲:我想加入一個指定的列,但它有冗餘列不會添加到數據框。這與combine_first類似,只是combine_first似乎沒有采用索引列可選參數。例如:pandas combine_first與特定的索引列?

# combine df1 and df2 based on "id" column 
df1 = pandas.merge(df2, how="outer", on=["id"]) 

與上述的問題是,共同從「ID」 DF1/DF2一邊列將被添加兩次(_x,_y前綴)至DF1。我該怎麼做:

# Do outer join from df2 to df1, matching items by "id" but not adding 
# columns that are redundant (df1 takes precedence if the values disagree) 
df1.combine_first(df2, on=["id"]) 

這怎麼辦?

+0

'on = None'是否適合您? – 2013-03-28 01:32:50

回答

1

如果您嘗試將df2的列合併到df1中,同時排除任何冗餘列,則應執行以下操作。

df1.set_index("id", inplace=True) 
df2.set_index("id", inplace=True) 
df3 = df1.merge(df2.ix[:,df2.columns-df1.columns], left_index=True, right_index=True, how="outer") 

不過這顯然不會值在df2,因爲它只是在非冗餘列將更新df1任何值。但既然你說df1將優先於任何不同意的價值觀,也許這會做詭計?