Вы можете использовать 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
:
In [24]: pd.util.testing.assert_frame_equal(df1, df3.reset_index(drop=True))
как в этом related answer.
Как Джефф указывает вы можете использовать .equals, который делает это:
In [25]: df1.equals(df3.reset_index(drop=True))
Out[25]: True
Возможный дубликат [панды DataFrames с Nans сравнения равенства] (http://stackoverflow.com/questions/19322506/pandas- dataframes-with-nans-comparation) – hellpanderrr