比较数据框中的所有相邻列

时间:2016-09-15 07:46:25

标签: python pandas

我有以下数据框

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

我想将A列与BBCCD进行比较。
我知道我可以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:])

我获得所需输出的方式。效率很重要,所以我觉得我的尝试是不充分的。如果这些是floatint s,我可以

df.diff(axis=1) == 0

但他们是字符串

1 个答案:

答案 0 :(得分:0)

使用shift(axis=1)

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

enter image description here