我有一个数据框:
Table A B C
Round 0.2 0 1
Triangle 3 3 3
Penta 1 1 1
我希望得到如下结果:
这意味着如果 A 到 C 列的唯一值仅产生一个值,则返回 false,如果多个值返回 true。总之,如果 A 列的值等于 B 且等于 C,则返回 false。
Table A B C Result
Round 0.2 0 1 True
Triangle 3 3 3 False
Penta 1 1 1 False
有人有想法吗?
最佳答案
您可以通过最后一列比较最后 3 列,不等于 ne
(!=
),然后添加 DataFrame.any
每行至少检查一个 True
:
print (df)
Table A B C Result
0 Round 0.2 0 1 True
1 Triangle 3.0 3 3 False
2 Penta 1.0 1 1 False
df['Result'] = df.iloc[:, -3:].ne(df.iloc[:, -1], axis=0).any(axis=1)
print (df)
Table A B C Result
0 Round 0.2 0 1 True
1 Triangle 3.0 3 3 False
2 Penta 1.0 1 1 False
详细信息:
print (df.iloc[:, -3:].ne(df.iloc[:, -1], axis=0))
A B C
0 True True False
1 False False False
2 False False False
如果第一列是索引,则解决方案很简单,并且可以将所有列与任何列进行比较:
df['Result'] = df.ne(df.iloc[:, -1], axis=0).any(axis=1)
print (df)
A B C Result
Table
Round 0.2 0 1 True
Triangle 3.0 3 3 False
Penta 1.0 1 1 False
关于python - 如何在 python pandas 中获取唯一行值并返回 bool 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51129229/