筛选三列中的值为sam的数据

2024-06-08 16:13:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将一个CSV导入Python中,我想过滤列以仅显示具有4个一致值的行

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 

Tags: csvnametestidfalsetrueperformancepass
2条回答

这种方法稍微长一点,但它是显式的,可以帮助您根据需要修改它。将“性能测试2”、“性能测试3”和“性能测试4”列中的值与“性能测试1”中的值进行比较,以确定它们是否都相等。你知道吗

    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()
        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 

如果每行的所有值都由^{}唯一而不是由1比较,请将^{}与test一起使用:

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  

要提高性能,请将第一个筛选列的所有值与^{}进行比较,以测试每行的所有True

df1 = df.filter(like='Performance test')
df['Consistent?'] = df1.eq(df1.iloc[:, 0], axis=0).all(axis=1)

相关问题 更多 >