python - Pandas 基于行值的新列
问题描述
我有一个数据框:
Item SW_test HW_test QA_test
0 PC Pass Pass Pass
1 Laptop Fail Fail Pass
2 Mouse Pass Pass Fail
我想创建一个最后一列,Pass
如果所有测试都通过(不区分大小写)并且Fail
一个或多个测试失败,它将给出。
Item SW_test HW_test QA_test Final
0 PC Pass Pass Pass Pass
1 Laptop Fail Fail Pass Fail
2 Mouse Pass Pass Fail Fail
如何df['Final']
在熊猫中创建?
解决方案
eq
与 一起使用all
:
df['Final'] = df.iloc[:,1:].eq('Pass').all(1)
#If case sensitive you can use
df['Final'] = df.iloc[:,1:].isin(['Pass','pass']).all(1)
#or
df['Final'] = df.iloc[:,1:].apply(lambda x: x.str.lower().eq('pass')).all(1)
#or
df['Final'] = df.iloc[:,1:].applymap(str.lower).eq('pass').all(1)
也可以使用 map 来代替再次映射 True/False np.where
:
df['Final'] = np.where(df['Final'], 'Pass', 'Fail')
推荐阅读
- asp.net-mvc - 如何使用 Entity Framework Code First 删除多对多自动生成的表
- php - 检查变量的最佳实践
- mysql - 我需要以当前日期结束我的案例陈述
- heap - 为什么优先队列更喜欢使用堆而不是数组来实现,尽管堆本身是使用数组实现的
- php - PHP Selenium 被 CORS 策略阻止
- java - Checkstyle - 在 switch 语句中返回计数
- javascript - 滚动到新消息底部
- android - 如何从 asyncTask 本身内部杀死 AsyncTask?
- mysql - MySQL 从关系表中选择他们有相同的亲戚
- javascript - 隐藏div香草javascript的动态方法