首页 > 解决方案 > 按索引连接 n 个数据帧

问题描述

我正在尝试pd.DataFrames沿列轴合并几个,使用索引删除重复项(A 和 B 来自由不同谓词过滤的同一源“表”,我正在尝试重新组合)。

A = pd.DataFrame({"values": [1, 2]}, pd.MultiIndex.from_tuples([(1,1),(1,2)], names=('l1', 'l2')))
B = pd.DataFrame({"values": [2, 3, 2]}, pd.MultiIndex.from_tuples([(1,2),(2,1),(2,2)], names=('l1', 'l2')))

pd.concat([A,B]).drop_duplicates()失败,因为它忽略了值的索引和重复数据删除,因此它删除了索引项 (2,2)

pd.concat([A.reset_index(),B.reset_index()]).drop_duplicates(subset=('l1', 'l2')).set_index(['l1', 'l2'])做我想做的事,但我觉得应该有更好的方法。

标签: pythonpandas

解决方案


你可以做一个简单的concat过滤掉重复使用index.duplicated

df1 = pd.concat([A,B])
df1[~df1.index.duplicated()]

Out[123]:
       values
l1 l2
1  1        1
   2        2
2  1        3
   2        2

推荐阅读