我要将CSV导入到Python中,并希望筛选列以仅显示具有4个值一致的EG的行
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 发布于 2019-11-29 23:00:49
如果每行的所有值在DataFrame.nunique与1的比较中都是唯一的,则使用DataFrame.filter with 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 为了提高性能,将所有值按第一个筛选列与DataFrame.all进行比较,以测试每行的所有True:
df1 = df.filter(like='Performance test')
df['Consistent?'] = df1.eq(df1.iloc[:, 0], axis=0).all(axis=1)发布于 2019-11-30 00:08:57
这种方式有点长,但它是明确的,这可以帮助你根据你想要的修改它。将"Performance Test 2“、"Performance Test 3”和"Performance Test 4“列中的值与"Performance Test 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 https://stackoverflow.com/questions/59107041
复制相似问题