gpt4 book ai didi

python - Pandas DataFrame 相等 - 索引编号

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:24 26 4
gpt4 key购买 nike

索引编号在测试数据帧相等性时重要吗?我有 2 个相同的数据框,具有完全相同的数据和列。唯一的区别是每行的索引号不同,并且 equals 方法返回 False。我该如何解决这个问题?这是我的数据框

   A   B
0 87 54
1 87 75
2 87 22
3 87 69

A B
418 87 69
107 87 54
108 87 75
250 87 22

最佳答案

您可以使用np.array_equal来检查值,但是顺序很重要,因此在您的示例中,您必须首先按索引排序。

In [11]: df1
Out[11]:
A B
0 87 54
1 87 75
2 87 22
3 87 69

In [12]: df2
Out[12]:
A B
418 87 69
107 87 54
108 87 75
250 87 22

In [13]: df3 = df2.sort()

In [14]: df3
Out[14]:
A B
107 87 54
108 87 75
250 87 22
418 87 69

In [15]: np.array_equal(df1, df3)
Out[15]: True
<小时/>

注意:您无法比较 df1 和 df2,因为它们具有不同的索引:

In [21]: df1 == df2
ValueError: Can only compare identically-labeled DataFrame object

您可以重置索引,但请注意,可能会因此引发异常:

In [22]: df3.reset_index(drop=True)
Out[22]:
A B
0 87 54
1 87 75
2 87 22
3 87 69

In [23]: np.all(df1 == df3.reset_index(drop=True))
Out[23]: True

另一种选择是在 assert_frame_equals 周围有一个 try 和 except block :

In [24]: pd.util.testing.assert_frame_equal(df1, df3.reset_index(drop=True))

就像这个related answer .

正如 Jeff 指出的,您可以使用 .equals,它的作用是:

In [25]: df1.equals(df3.reset_index(drop=True))
Out[25]: True

关于python - Pandas DataFrame 相等 - 索引编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33223527/

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