2016-02-03 57 views
0

df1更新DF1行:大熊貓,從DF2

id, colA, colB, colC, name 
1, 1, 2, 3, a 
2, 2, 3, 4, a 
3, 3, 4, 5, b 
4, 4, 5, 6, b 

df2

id, colA, colB, colD, name 
2, 10, 20, D1, a 
3, 20, 30, D2, a 

有沒有一種方法,可能使用mergejoindf2匹配替換dfidname

所以結果woul D看起來像:

id, colA, colB, colC, name, colD 
1, 1, 2, 3, a, N/A 
2, 10, 20, N/A, a, D1 
3, 3, 4, 5, b, N/A 
4, 4, 5, 6, b, N?A 

我在想像這樣的:df1.loc[df1.Locident.isin(df2.Locident)] = df2但只匹配一列。

+0

'df2.combine_first(df1)'工作嗎? – EdChum

+0

@EdChum哦,這與我想要的類似,但我想用'['id','name']' – As3adTintin

回答

0

,你可以:

df = pd.concat([df1, df2]).drop_duplicates(subset=['id', 'name'], keep='last').drop_duplicates(subset='id') 

DataFrame小號結合,並保持重複id S和name s表示從df2幹,並從df2,你不想讓擺脫id秒。

+0

'匹配來自'df2'的行替換'df1'的特定行。 – Stefan