首页  >  文章  >  后端开发  >  如何识别 df2 中存在但 df1 中不存在的行?

如何识别 df2 中存在但 df1 中不存在的行?

Barbara Streisand
Barbara Streisand原创
2024-10-19 21:08:29374浏览

How to Identify Rows Present in df2 But Absent in df1?

两个 DataFrame 之间的差异

比较数据帧以识别差异对于数据分析至关重要。在这个问题中,我们给定了两个数据帧,df1 和 df2,需要找到 df2 中存在但 df1 中不存在的行。

与布尔矩阵比较

使用 != 等运算符进行直接比较如果数据帧具有不同的结构,可能会导致错误。更好的方法是连接数据帧,重置它们的索引,然后比较它们。使用 df1 == df2 将生成一个布尔矩阵,其中 True 表示两个数据帧中都存在行,False 表示差异。

按唯一值分组

接下来,我们可以执行分组操作在连接的数据帧上识别唯一的行。目标是找到数据框中仅出现一次的行。我们可以通过检查组的长度来实现这一点;长度为 1 的行代表唯一记录。

过滤数据帧

最后,我们可以使用识别的唯一行索引来过滤数据帧。这将为我们提供 df2 中 df1 中不存在的行。

示例

例如,考虑提供的示例数据帧:

<code class="python">import pandas as pd

df1 = ...
df2 = ...

# Concatenate dataframes
df = pd.concat([df1, df2])
df = df.reset_index(drop=True)

# Group by unique values
df_gpby = df.groupby(list(df.columns))

# Get unique row indices
idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]

# Filter dataframe
result = df.reindex(idx)</code>

结果数据帧将包含 df2 中不存在于 df1 中的行。

以上是如何识别 df2 中存在但 df1 中不存在的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn