2017-07-19 188 views
0

我正在尋找開發一個單元測試,它比較兩個數據框,並返回True如果它們的長度是相同的,如果不返回長度差異以及缺少的輸出行。單元測試熊貓DataFrame

例如: 實施例1:

df1 = {0,1,2,3,4} 
df2 = {0,1,2,3,4} 

實施例2:

df1 = {0,1,2,3,4} 
df2 = {0,2,3,4} 

假。 2缺失。

通知我df1中的第二項缺失自df2。

這是可能的東西嗎?

回答

2

我覺得首先你必須確定你想要什麼:要麼一單元測試或返回兩個數據幀之間差異的函數。

如果是前者的情況下,你可以使用pd.util.testing.assert_frame_equal

first = pd.DataFrame(np.arange(16).reshape((4,4)), columns=['A', 'B', 'C', 'D']) 
first['A'][0] = 99 
second = pd.DataFrame(np.arange(16).reshape((4,4)), columns=['A', 'B', 'C', 'D']) 

pd.util.testing.assert_frame_equal(first, second) 

,如果你DataFrame小號有所不同,你會得到一個斷言錯誤

AssertionError: DataFrame.iloc[:, 0] are different 

DataFrame.iloc[:, 0] values are different (25.0 %) 
[left]: [99, 4, 8, 12] 
[right]: [0, 4, 8, 12] 

在後一種情況下,如果你真的想一個函數可以告訴你有多少行丟失以及數據幀與另一行有什麼不同,那麼你正在尋找的不是一個單元測試。

1

退房pd.util.testing

對於你的問題,你可以做pd.util.testing.assert_equal(DF1,DF2)