Python 如何用另一个数据帧更新一个数据帧(更新旧数据并添加新数据)
df1和df2具有相同的数据结构。我想在匹配“key”值时用df2更新df1的记录,并且在df1中不存在“key”值时将df2中的记录添加到df1中,我应该使用什么样的函数?谢谢 df列:受让人id issuetype键 df1: df2: 使用df2更新后的df1:Python 如何用另一个数据帧更新一个数据帧(更新旧数据并添加新数据),python,pandas,dataframe,Python,Pandas,Dataframe,df1和df2具有相同的数据结构。我想在匹配“key”值时用df2更新df1的记录,并且在df1中不存在“key”值时将df2中的记录添加到df1中,我应该使用什么样的函数?谢谢 df列:受让人id issuetype键 df1: df2: 使用df2更新后的df1: assignee id issuetype key Tom 1 story TP-1 Anna 2 bug TP-2 Tim 3 bug TP-3 Jane
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
assignee id issuetype key
Tom 1 story TP-1
Anna 2 bug TP-2
Tim 3 bug TP-3
Jane 4 bug TP-4
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
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