2016-09-15 49 views
0

我有以下的數據幀比較所有相鄰列在數據幀

df = pd.DataFrame(np.random.choice(list('xyz'), (5, 4)), columns=list('ABCD')) 

print df 

    A B C D 
0 x z x z 
1 y z x z 
2 y z x x 
3 y y y x 
4 y x z z 

我想比較列ABBCCD
我知道我可以做df.A == df.B,但有沒有辦法輕鬆比較所有列與其相鄰列?

我想看到

 B  C  D 
0 False False False 
1 False False False 
2 False False True 
3 True True False 
4 False False True 

我已經試過這

pd.concat([df.iloc[:, i] == df.iloc[:, i+1] for i in range(df.shape[1]-1)], axis=1, keys=df.columns.tolist()[1:]) 

這就是我如何得到所需的輸出。效率很重要,所以我覺得我的嘗試是不夠的。如果這些float S或int S,我可以

df.diff(axis=1) == 0 

但他們串

回答

0

使用shift(axis=1)

(df == df.shift(axis=1)).iloc[:, 1:] 

enter image description here