设置Pandas中两个数据帧的差异[重复]

问题描述 投票:2回答:1

我希望有人可以帮助解决这个问题。之前已经提出了类似的问题,但他们的答案并不完全正确,即使是选定的答案。

我想得到两个Pandas数据帧的设置差异。意思是,df1 - df2等于在df1中存在但在df2中不存在的行。 df1中但df2中没有的任何行必须在结果中。共同的行不得在结果中。经典集差异定义。

此外,必须忽略指数。这意味着必须通过以下方式确定两行的相等性:

1)它们是否具有相同的列名(如果它们包含数据帧,则满足)和

2)如果1为真,那么对于每一列,它们的值是否完全相同(字符串匹配 - 好吧,我们也可以考虑不区分大小写)

其他问题中的示例是简化的,虽然它们可能在有限的范围内工作,但它们并不适用于所有情况。请尝试考虑列中的值可能不是简单数据类型,而是列表或元组本身的情况。或者,如果有人后来定义了自定义类型及其equals方法,则该解决方案也适用于这些类型。

python pandas dataframe set-difference
1个回答
0
投票

您可以尝试散列行然后检查

防爆。

df1['match'] = df.apply(lambda x: hash(tuple(x)), axis=1)
df2['match'] = df2.apply(lambda x: hash(tuple(x)), axis=1)
df_diff = df1[~df1['match'].isin(df2['match'])]
© www.soinside.com 2019 - 2024. All rights reserved.