如何根据 pandas 另一列中的条件生成具有值的新列 [英] How to generate new column with values based on condition in another column in pandas

查看:80
本文介绍了如何根据 pandas 另一列中的条件生成具有值的新列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下所示的数据框,我需要生成一个新列 Comment,对于指定的值,它应该显示 Fail

I have a dataframe as below, I need to generate a new column called "Comment" and for the values specified it should say "Fail"

输入:

        Tel    MC             WT

        AAA    Rubber         9999
        BBB    Tree           0
        CCC    Rub            12
        AAA    Other          20
        BBB    Same           999
        DDD    Other-Same     70 

尝试输入的代码:

          df.loc[(df[WT] == 0 | df[WT] == 999 | df[WT] == 9999 | df[WT] == 99999),'Comment'] = 'Fail'

错误:

         AttributeError: 'str' object has no attribute 'loc'

预期输出:

       Tel    MC             WT      Comment
       AAA    Rubber         9999    Fail
       BBB    Tree           0       Fail
       CCC    Rub            12
       AAA    Other          20
       BBB    Same           999     Fail
       DDD    Other-Same     70


推荐答案

使用用于测试成员资格的 Series.isin ,不匹配的值是 NaN s:

df.loc[df['WT'].isin([0, 999,9999,99999]),'Comment'] = 'Fail'
print (df)
   Tel          MC    WT Comment
0  AAA      Rubber  9999    Fail
1  BBB        Tree     0    Fail
2  CCC         Rub    12     NaN
3  AAA       Other    20     NaN
4  BBB        Same   999    Fail
5  DDD  Other-Same    70     NaN

如果需要分配 Fail ,并且空值使用 numpy.where

If need assign Fail and empty values use numpy.where:

df['Comment'] = np.where(df['WT'].isin([0, 999,9999,99999]), 'Fail', '')
print (df)
   Tel          MC    WT Comment
0  AAA      Rubber  9999    Fail
1  BBB        Tree     0    Fail
2  CCC         Rub    12        
3  AAA       Other    20        
4  BBB        Same   999    Fail
5  DDD  Other-Same    70        

这篇关于如何根据 pandas 另一列中的条件生成具有值的新列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆