我正在尝试根据另一个数据框更新数据框。我尝试使用 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']})
Run Code Online (Sandbox Code Playgroud)
d2 = pd.DataFrame({'ticket': ['a','a','b'], 'n': ['40','50','60'],
'q': ['150','180','200']})
Run Code Online (Sandbox Code Playgroud)
预期结果是
pd.DataFrame({'ticket': ['a','a','b','c'], 'n': ['40','50','60', '30'],
'q': ['150','180','200','130'], 'description': ['da','da','db','dc']})
Run Code Online (Sandbox Code Playgroud)
我尝试这样做
d1.set_index('ticket', inplace=True)
d1.update(d2.set_index('ticket'))但提出了上述错误
让我们尝试使用combine_first和set_index来reindex获得所需的列顺序:
final=(d2.set_index('ticket').combine_first(d1.set_index('ticket'))
.reset_index().reindex(columns=d1.columns))
Run Code Online (Sandbox Code Playgroud)
ticket n q description
0 a 40 150 da
1 a 50 180 da
2 b 60 200 db
3 c 30 130 dc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
824 次 |
| 最近记录: |