我正在尝试根据另一个更新数据框。我尝试使用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']})
d2 = pd.DataFrame({'ticket': ['a','a','b'], 'n': ['40','50','60'],
'q': ['150','180','200']})
预期结果将是
pd.DataFrame({'ticket': ['a','a','b','c'], 'n': ['40','50','60', '30'],
'q': ['150','180','200','130'], 'description': ['da','da','db','dc']})
我尝试这个
d1.set_index('ticket', inplace=True)
d1.update(d2.set_index('ticket'))
,但出现上述错误
答案 0 :(得分:2)
让combine_first
与set_index
和reindex
一起获得所需的列顺序:
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