首页 > 解决方案 > 合并熊猫数据框并覆盖列

问题描述

以这种方式合并到 python 数据帧的最快方法是什么?我有两个具有相似结构的数据框(都有一个主键 id 和一些值列)。我想做的是根据id合并两个数据框。有没有基于熊猫操作的方法?我现在如何实现它的代码如下:

import pandas as pd

a = pd.DataFrame({'id': [1,2,3], 'letter': ['a', 'b', 'c']})
b = pd.DataFrame({'id': [1,3,4], 'letter': ['A', 'C', 'D']})
a_dict =  {e[id]: e for e in a.to_dict('record')}
b_dict =  {e[id]: e for e in b.to_dict('record')}
c_dict = a_dict.copy()
c_dict.update(b_dict)
c = pd.DataFrame(list(c.values())

在这里,c 相当于

pd.DataFrame({'id': [1,2,3,4], 'letter':['A','b', 'C', 'D']})

   id letter
0   1      A
1   2      b
2   3      C
3   4      D

标签: pythonpandas

解决方案


combine_first

如果'id'是您的主键,则将其用作您的索引。

b.set_index('id').combine_first(a.set_index('id')).reset_index()

   id letter
0   1      A
1   2      b
2   3      C
3   4      D

mergegroupby

a.merge(b, 'outer', 'id').groupby(lambda x: x.split('_')[0], axis=1).last()

   id letter
0   1      A
1   2      b
2   3      C
3   4      D

推荐阅读