gpt4 book ai didi

python - 比较两个数据帧并获得差异

转载 作者:IT老高 更新时间:2023-10-28 20:24:51 25 4
gpt4 key购买 nike

我有两个数据框。例子:

df1:
Date Fruit Num Color
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange 8.6 Orange
2013-11-24 Apple 7.6 Green
2013-11-24 Celery 10.2 Green

df2:
Date Fruit Num Color
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange 8.6 Orange
2013-11-24 Apple 7.6 Green
2013-11-24 Celery 10.2 Green
2013-11-25 Apple 22.1 Red
2013-11-25 Orange 8.6 Orange

每个数据框都将日期作为索引。两个数据帧具有相同的结构。

我想要做的是比较这两个数据帧并找出 df2 中哪些行不在 df1 中。我想比较日期(索引)和第一列(香蕉、苹果等),看看它们是否存在于 df2 和 df1 中。

我尝试了以下方法:

对于第一种方法,我收到此错误:“异常:只能比较标记相同的 DataFrame 对象”。我尝试将日期删除为索引,但得到相同的错误。

third approach ,我让断言返回 False,但无法弄清楚如何实际查看不同的行。

欢迎指点

最佳答案

这种方法 df1 != df2 仅适用于具有相同行和列的数据帧。实际上,所有数据框轴都与 _indexed_same 方法进行比较,如果发现差异,即使按列/索引顺序也会引发异常。

如果我没听错的话,你想找到的不是变化,而是对称的差异。为此,一种方法可能是连接数据帧:

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

分组

>>> df_gpby = df.groupby(list(df.columns))

获取唯一记录的索引

>>> idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]

过滤器

>>> df.reindex(idx)
Date Fruit Num Color
9 2013-11-25 Orange 8.6 Orange
8 2013-11-25 Apple 22.1 Red

关于python - 比较两个数据帧并获得差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20225110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com