按索引合并n个数据帧

时间:2019-08-23 01:43:57

标签: python pandas

我正在尝试沿列轴合并多个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'])可以满足我的要求,但是我觉得应该有更好的方法。

1 个答案:

答案 0 :(得分:1)

您可以做一个简单的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