1
我想對多列執行逐行比較。我想要一個單一的系列,指示一行中的所有條目(多個列)是否與前一行相同。在Python中,比較多列的行差異
可以說我有以下的數據幀
import pandas as pd
df = pd.DataFrame({'A' : [1, 1, 1, 2, 2],
'B' : [2, 2, 3, 3, 3],
'C' : [1, 1, 1, 2, 2]})
我可以比較所有行,所有列
>>> df.diff().eq(0)
A B C
0 False False False
1 True True True
2 True False True
3 False True False
4 True True True
這給出了一個數據幀單獨比較每個系列。我想要的是一個系列中所有列的比較。
我可以通過循環
compare_all = df.diff().eq(0)
compare_tot = compare_all[compare_all.columns[0]]
for c in compare_all.columns[1:]:
compare_tot = compare_tot & compare_all[c]
實現這一目標這給
>>> compare_tot
0 False
1 True
2 False
3 False
4 True
dtype: bool
預期。
是否有可能實現這一點與單線,即沒有循環?
我是正確的假設,DIFF() - 功能僅適用於數字數據,而這個工程的字符串呢? – mortysporty
正確。如果值不能與字符串的情況不同,那麼'diff'方法會引發錯誤。 – Alexander