我相信这个问题一定已经在某个地方得到了答案,但我找不到适合我的答案。
我有两个熊猫DataFrames
a = pd.DataFrame({'A1':[1,2,3], 'A2':[2,4,6]}, index=['a','b','c'])
b = pd.DataFrame({'A1':[3,5,6], 'A2':[3,6,9]}, index=['a','c','d'])
我想合并它们以得到像
这样的东西result = pd.DataFrame({
'A1' : [3,2,5,6],
'A2' : [3,4,6,9]
}, index=['a','b','c','d'])
基本上,我想要一个新的df,包含两个索引的并集。在索引匹配的情况下,应该用第二个df(在本例中为b
)中的值更新每列中的值。如果没有匹配,则从开始的df(在本例中为a
)取值。
我尝试了merge(), join()和concat(),但我无法获得此结果。
您可以使用pd.concat
创建一个数据帧(b
是第一个,因为它是b
,它的值优先于a
),然后删除重复的索引:
使用示例数据:
c = pd.concat([b,a])
c[~c.index.duplicated()].sort_index()
打印:
A1 A2
a 3 3
b 2 4
c 5 6
d 6 9