我有數據的熊貓數據幀中給定列中的所有行必須匹配:給定列中的所有行必須匹配,所有列
df = pd.DataFrame({'A': [1,1,1,1,1,1,1,1,1,1],
'B': [2,2,2,2,2,2,2,2,2,2],
'C': [3,3,3,3,3,3,3,3,3,3],
'D': [4,4,4,4,4,4,4,4,4,4],
'E': [5,5,5,5,5,5,5,5,5,5]})
In [10]: df
Out[10]:
A B C D E
0 1 2 3 4 5
1 1 2 3 4 5
2 1 2 3 4 5
...
6 1 2 3 4 5
7 1 2 3 4 5
8 1 2 3 4 5
9 1 2 3 4 5
我想一個快速的方法來知道是否有是DataFrame中任何地方的差異。在這一點上,我不需要知道哪些值已經變化,因爲我將在稍後處理這些值。我只需要一個快速的方法來知道DataFrame是否需要進一步關注,或者我是否可以忽略它並繼續下一步。
我可以檢查使用
(df.loc[:,'A'] != df.loc[0,'A']).any()
任何給定的列,但我的大熊貓知識限制我通過列迭代(我的理解迭代的熊貓令人難以接受的)比較所有的人:
A B C D E
0 1 2 3 4 5
1 1 2 9 4 5
2 1 2 3 4 5
...
6 1 2 3 4 5
7 1 2 3 4 5
8 1 2 3 4 5
9 1 2 3 4 5
for col in df.columns:
if (df.loc[:,col] != df.loc[0,col]).any():
print("Found a fail in col %s" % col)
break
Out: Found a fail in col C
如果數據框的任何列中的任何行與列中的所有值都不匹配,是否有優雅的方式來返回布爾值?可能沒有迭代?
到目前爲止,所有的方法都能正常工作,但我認爲使用nunique()將會是代碼讀者(我)正在做的事情的一個很好的暗示。 –