df1和df2具有相同的数据结构。当“键”值匹配时,我想用df2更新df1的记录,当df1中不存在“键”值时,也要将df2的记录添加到df1中,我应该使用哪种功能?谢谢。
df列:受让人ID问题类型密钥
df1:
assignee id issuetype key
Tom 1 bug TP-1
Jane 2 bug TP-2
Tim 3 bug TP-3
df2:
assignee id issuetype key
Tom 1 story TP-1
Anna 2 bug TP-2
Tim 3 bug TP-3
Jane 4 bug TP-4
使用df2更新后的df1:
assignee id issuetype key
Tom 1 story TP-1
Anna 2 bug TP-2
Tim 3 bug TP-3
Jane 4 bug TP-4
答案 0 :(得分:1)
将concat
与DataFrame.drop_duplicates
一起使用:
df = pd.concat([df2, df1]).drop_duplicates(subset=['key'])
print (df)
assignee id issuetype key
0 Tom 1 story TP-1
1 Anna 2 bug TP-2
2 Tim 3 bug TP-3
3 Jane 4 bug TP-4
或将DataFrame.update
与DataFrame.reindex
:
cols = df1.columns
df1 = df1.set_index('key')
df2 = df2.set_index('key')
df1 = df1.reindex(columns=df1.columns.union(df2.columns, sort=False),
index=df1.index.union(df2.index, sort=False))
df1.update(df2)
df1 = df1.reset_index().reindex(columns=cols)
print (df1)
assignee id issuetype key
0 Tom 1.0 story TP-1
1 Anna 2.0 bug TP-2
2 Tim 3.0 bug TP-3
3 Jane 4.0 bug TP-4