首页 > 解决方案 > 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']在熊猫中创建?

标签: pythonpandas

解决方案


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

推荐阅读