如何查找两个数据框之间的差异
在处理数据时,我们通常可能有两个包含重叠信息的数据框,但是还包含唯一的行或列。要获得仅包含一个数据帧而不包含另一个数据帧中存在的行和列的数据帧,我们需要执行数据帧差异操作。
为了实现这一点,我们可以使用 drop_duplicates 函数和keep=False 参数,它有效地从连接的数据框中删除任何重复的行:
pd.concat([df1,df2]).drop_duplicates(keep=False)
但是,此方法假设两个数据框都没有重复项。如果原始数据框中存在重复项,上述方法会无意中删除它们。为了处理这种情况,我们可以采用两种替代方法之一:
方法 1:将 isin 与元组结合使用
此方法涉及为中的每一行创建一个元组数据帧,然后使用 isin 检查 df1 中的元组是否存在于 df2 中。只保留 df1 中存在的行:
df1[~df1.apply(tuple,1).isin(df2.apply(tuple,1))]
方法二:与 Indicator 合并
通过将指标参数为 True 的两个数据框进行合并,我们可以创建一个新列,指示哪些行对于 df1 或 df2 是唯一的。然后,可以通过选择 _merge 列值为 left_only 的行来过滤掉 df1 特有的行:
df1.merge(df2,indicator = True, how='left').loc[lambda x : x['_merge']!='both']
通过实施这些技术,您可以有效地确定两个数据帧之间的差异,确保您有一个数据框,仅包含每个数据框的唯一信息。
以上是如何高效查找两个 Pandas DataFrame 之间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!