python - 如何在 python pandas 中获取唯一行值并返回 bool 结果?

标签 python pandas dataframe

我有一个数据框:

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/

相关文章:

python - Pandas:使用 np.where() 删除值小于今天的行?

Python 将 HTML 箭头显示到数据框

python - Scrapy 将 csv 文件中的额外数据传递给解析

python - 如何获取 Pandas 中具有数值和分类值的列作为单独的列表?

python - 在 Pandas 中如何反转十进制表示法?

python - 如何合并两个表并将行转置为列

r - 需要通过多个公共(public)列合并多个数据框

python - 在python中使用selenium使用IE webdriver,无需设置安全模式

python - Flask 丢失客户的回复

python - 使用 Python 获取 adb 输出