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