为了账号安全,请及时绑定邮箱和手机立即绑定

基于行值的 Pandas 新列

基于行值的 Pandas 新列

一只名叫tom的猫 2023-04-25 17:39:15
我有一个数据框:    Item    SW_test HW_test QA_test0   PC      Pass    Pass    Pass1   Laptop  Fail    Fail    Pass2   Mouse   Pass    Pass    Fail我想创建一个最后一列,Pass如果所有测试都通过(不区分大小写)以及Fail一个或多个测试失败,它将给出。    Item    SW_test HW_test QA_test Final0   PC      Pass    Pass    Pass    Pass1   Laptop  Fail    Fail    Pass    Fail2   Mouse   Pass    Pass    Fail    Fail我怎样才能df['Final']在熊猫中创造?
查看完整描述

4 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

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


查看完整回答
反对 回复 2023-04-25
?
慕少森

TA贡献2019条经验 获得超9个赞

cols = ['SW_test', 'HW_test', 'QA_test']

df['Final'] = df[cols].eq('Pass').all(1)

    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


查看完整回答
反对 回复 2023-04-25
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以应用 lambda 函数来检查条件成立的位置,然后可以用您想要的任何值替换 true/false 值。例如:


#create a dataframe

df = pd.DataFrame({'a':['Pass','Pass'], 'b':['Pass','Fail']})



    a       b

0   Pass    Pass

1   Pass    Fail


在条件成立的地方创建一个新列


df['c'] = df.apply(lambda row: row.a=='Pass' and  row.b=='Pass', axis=1)



    a       b       c

0   Pass    Pass    True

1   Pass    Fail    False


将 true/false 值替换为您要显示的内容


df['c'] = df['c'].map({ True: 'Pass', False: 'Fail'})



    a       b       c

0   Pass    Pass    Pass

1   Pass    Fail    Fail


查看完整回答
反对 回复 2023-04-25
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

# set column to "Pass" initially

df["Final"] = "Pass"


# set "Fail" rows

df.loc[(

    (df.loc[:, ["SW_test", "HW_test", "QA_test"]] == "Fail") | 

    (df.loc[:, ["SW_test", "HW_test", "QA_test"]] == "fail")

  ).any(axis = 1), "Final"] = "Fail"


查看完整回答
反对 回复 2023-04-25
  • 4 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信