之前:
在A:
Seller | Buyer | Side A
----------------------
X | Y | True
C | D | True
在B:
Seller | Buyer | Side B
----------------------
X | Y | True
假设键列仅是卖方和买方,则这些行应匹配,然后从A和B中删除。这些列可以/将在两个df中包含重复的条目。
之后:
Seller | Buyer | Side A
----------------------
C | D | True
我该怎么做?
答案 0 :(得分:1)
从Seller
和Buyer
列创建MultiIndex
,然后使用MultiIndex.isin
创建布尔掩码,使用此掩码过滤行。:
i1 = pd.MultiIndex.from_arrays([df1['Seller'], df1['Buyer']])
i2 = pd.MultiIndex.from_arrays([df2['Seller'], df2['Buyer']])
df1, df2 = df1[~i1.isin(i2)], df2[~i2.isin(i1)]
使用DataFrame.set_index
的相似想法:
i1 = df1.set_index(['Seller', 'Buyer']).index
i2 = df2.set_index(['Seller', 'Buyer']).index
df1, df2 = df1[~i1.isin(i2)], df2[~i2.isin(i1)]
结果:
print(df1)
Seller Buyer Side A
1 C D True