a1 = pd.DataFrame({'A': [1,2,3], 'B': [2,3,4]})
b2 = pd.DataFrame({'A': [1,4], 'B': [3,6]})


我想得到

c = pd.DataFrame({'A': [1,2,3,4], 'B': [3,3,4,6]})


a1和b2在key='A'上合并
但是当“ A”相等但B不同时,得到b2值

我如何获得这项工作?不知道。

最佳答案

首先,将两个数据帧彼此串联在一起,以获得一个大数据帧:

c = pd.concat([a1, b2], 0)


    A   B
0   1   2
1   2   3
2   3   4
0   1   3
1   4   6


然后,对A列进行分组,以仅获得A的唯一值,通过使用last可以确保比重复时使用b2的值更大。这给出:

c = c.groupby('A').last()


    B
A
1   3
2   3
3   4
4   6


然后设置重置索引以获得一个不错的数字索引。

c = c.reset_index()


返回:

    A   B
0   1   3
1   2   3
2   3   4
3   4   6


要一次完成所有操作,只需输入以下代码行:

c = pd.concat([a1, b2], 0)
c = c.groupby('A').last().reset_index()

关于python - 如何合并和更新2个数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42829178/

10-12 18:21