如何用另一个数据框更新一个熊猫数据框(更新旧数据并添加新数据)

时间:2020-09-11 06:57:23

标签: python pandas dataframe

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

1 个答案:

答案 0 :(得分:1)

concatDataFrame.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.updateDataFrame.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