合并两个 DataFrame 索引
Keeping both DataFrame indexes on merge
我确定这个问题一定已经在某个地方得到了回答,但我找不到适合我的情况的答案。
我有 2 pandas 个 DataFrame
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
我确定这个问题一定已经在某个地方得到了回答,但我找不到适合我的情况的答案。
我有 2 pandas 个 DataFrame
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