Вы можете использовать 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))
как в этом связанном ответе.
Как указывает Джефф, вы можете использовать .equals, который делает следующее:
In [25]: df1.equals(df3.reset_index(drop=True))
Out[25]: True
person
Andy Hayden
schedule
19.10.2015