索引編號是否在測試數據幀相等方面很重要?我有兩個完全相同的數據和列相同的數據框。唯一的區別是每行的索引號是不同的,等於方法返回一個False。我怎樣才能解決這個問題?這裏是我的數據幀熊貓DataFrame相等 - 索引編號
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
索引編號是否在測試數據幀相等方面很重要?我有兩個完全相同的數據和列相同的數據框。唯一的區別是每行的索引號是不同的,等於方法返回一個False。我怎樣才能解決這個問題?這裏是我的數據幀熊貓DataFrame相等 - 索引編號
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
:
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與NaN的比較平等(的可能的複製http://stackoverflow.com/questions/19322506/pandas- dataframes-with-nans-equality-comparison) – hellpanderrr