使用另一个具有重复索引的数据框更新数据

时间:2019-09-06 15:58:39

标签: python pandas

我正在尝试根据另一个更新数据框。我尝试使用df.update问题,该索引可以被复制,从而引发错误:ValueError: cannot reindex from a duplicate axis

有什么想法吗?

例如:

d1 = pd.DataFrame({'ticket': ['a','b','c'], 'n': ['10','20','30'], 
                   'q': ['100','120','130'],'description': ['da','db','dc']})

enter image description here

d2 = pd.DataFrame({'ticket': ['a','a','b'], 'n': ['40','50','60'], 
                   'q': ['150','180','200']})

enter image description here

预期结果将是

pd.DataFrame({'ticket': ['a','a','b','c'], 'n': ['40','50','60', '30'], 
              'q': ['150','180','200','130'], 'description': ['da','da','db','dc']})

enter image description here

我尝试这个 d1.set_index('ticket', inplace=True) d1.update(d2.set_index('ticket')),但出现上述错误

1 个答案:

答案 0 :(得分:2)

combine_firstset_indexreindex一起获得所需的列顺序:

final=(d2.set_index('ticket').combine_first(d1.set_index('ticket'))
                  .reset_index().reindex(columns=d1.columns))

  ticket   n    q description
0      a  40  150          da
1      a  50  180          da
2      b  60  200          db
3      c  30  130          dc