首页  >  文章  >  后端开发  >  如何比较两个数据帧并根据特定列提取差异?

如何比较两个数据帧并根据特定列提取差异?

Patricia Arquette
Patricia Arquette原创
2024-10-19 21:14:02346浏览

How to Compare Two Dataframes and Extract Differences Based on Specific Columns?

比较两个数据帧并识别差异

在您的场景中,您有两个数据帧 df1 和 df2,具有相同的结构和行索引。您的目标是通过比较日期和水果值来确定哪些行存在于 df2 而不是 df1。

直接比较

使用 df1 != df2 的方法不合适,因为它需要相同标记的数据帧。删除日期索引也无法解决问题。

串联和分组

要查找差异,您可以将数据帧串联成单个数据帧 df:

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

df = pd.concat([df1, df2])
df = df.reset_index(drop=True)</code>

按 df 的所有列进行分组以识别唯一记录:

<code class="python">df_gpby = df.groupby(list(df.columns))</code>

过滤唯一记录

接下来,检索唯一记录的索引,即组大小为 1 的行:

<code class="python">idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]</code>

最后,您可以使用这些索引来过滤连接的数据帧,以仅获取 df2 独有的行:

<code class="python">df.reindex(idx)</code>

这将返回一个包含所需差异的数据框:

         Date   Fruit   Num   Color
9  2013-11-25  Orange   8.6  Orange
8  2013-11-25   Apple  22.1     Red

以上是如何比较两个数据帧并根据特定列提取差异?的详细内容。更多信息请关注PHP中文网其他相关文章!

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