首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤三列中值相同的数据

过滤三列中值相同的数据
EN

Stack Overflow用户
提问于 2019-11-29 22:57:25
回答 2查看 161关注 0票数 0

我要将CSV导入到Python中,并希望筛选列以仅显示具有4个值一致的EG的行

代码语言:javascript
复制
ID,  Name,  Performance test 1 , Performance test 2 , Performance test 3, Performance test 4, Consistent?
1    Bob    Pass                 Pass                 Pass                 Pass               TRUE 
2    Dave   Pass                 Fail                 Pass                 Pass               FALSE
3    Roger  Fail                 Fail                 Fail                 Fail               TRUE 
EN

回答 2

Stack Overflow用户

发布于 2019-11-29 23:00:49

如果每行的所有值在DataFrame.nunique1的比较中都是唯一的,则使用DataFrame.filter with test

代码语言:javascript
复制
df['Consistent?'] = df.filter(like='Performance test').nunique(axis=1).eq(1)
print (df)

   ID   Name Performance test 1 Performance test 2 Performance test 3  \
0   1    Bob               Pass               Pass               Pass   
1   2   Dave               Pass               Fail               Pass   
2   3  Roger               Fail               Fail               Fail   

  Performance test 4  Consistent?  
0               Pass         True  
1               Pass        False  
2               Fail         True  

为了提高性能,将所有值按第一个筛选列与DataFrame.all进行比较,以测试每行的所有True

代码语言:javascript
复制
df1 = df.filter(like='Performance test')
df['Consistent?'] = df1.eq(df1.iloc[:, 0], axis=0).all(axis=1)
票数 1
EN

Stack Overflow用户

发布于 2019-11-30 00:08:57

这种方式有点长,但它是明确的,这可以帮助你根据你想要的修改它。将"Performance Test 2“、"Performance Test 3”和"Performance Test 4“列中的值与"Performance Test 1”中的值进行比较,看看它们是否都相等。

代码语言:javascript
复制
    import pandas as pd
    import numpy as np

    data = {'ID':[1,2,3], 'Name':['Bob', 'Dave', 'Roger'], 'Performance Test 1':["Pass", "Pass", "Fail"], 'Performance Test 2':["Pass", "Fail", "Fail"], 'Performance Test 3':["Pass", "Pass", "Fail"], 'Performance Test 4':["Pass", "Pass", "Fail"]} 

    df = pd.DataFrame(data)

    df['Consistent?'] = np.where((df['Performance Test 1'] == df['Performance Test 2']) & (df['Performance Test 1'] == df['Performance Test 3']) & (df['Performance Test 1'] == df['Performance Test 4']), 1, 0)
    df.head()
代码语言:javascript
复制
        Out[9]: 
   ID   Name Performance Test 1 Performance Test 2 Performance Test 3  \
0   1    Bob               Pass               Pass               Pass   
1   2   Dave               Pass               Fail               Pass   
2   3  Roger               Fail               Fail               Fail   

  Performance Test 4  Consistent?  
0               Pass            1  
1               Pass            0  
2               Fail            1 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59107041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档