比较数据框中的多列(超过2列)

我有一个数据框

data = pd.DataFrame({'student': ['a', 'b', 'c'],
                     'rank': [2, 2, 1],
                     'rank1': [3, 3, 2],
                     'rank2': [4, 2, 3]})

我的代码

import numpy as np

data['Diff'] = np.where((data['rank'] != data['rank1']) &
                        (data['rank1'] != data['rank2']), '1', '0')

要求所有等级必须与 1 不同,否则为 0 但我得到的 b 也为 1

回答

我们可以filterrank样柱,然后使用nunique沿着axis=1来检查的发生,N唯一值

r = data.filter(like='rank')
data['diff'] = r.nunique(1).eq(r.shape[1]).view('i1')

  student  rank  rank1  rank2  diff
0       a     2      3      4     1
1       b     2      3      2     0
2       c     1      2      3     1


以上是比较数据框中的多列(超过2列)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>