比较数据框中的多列(超过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
回答
我们可以filter在rank样柱,然后使用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