如何用3个条件在多列中对一列分组

时间:2019-06-03 20:00:43

标签: python-3.x string dataframe pandas-groupby

我有数据框,需要在以下条件下应用

  1. 检查colA> 0
  2. 如果是,请在colB中搜索字符串“ recycled”,并比较其在colC中是否存在
  3. 如果满足,则为true,否则为false

数据框:

     Temp       colA     colB             colC

     ob1        50       HDP              HDP
     ob1        50       HDP recycled     HDP
     ob1        50       HDP              HDP
     ob2        0        PE               PE
     ob2        0        PE               PE
     ob3        30       PE recycled      PE recycled
     ob3        30       PE               PE recycled

输出:

     Temp       colA     colB             colC           output
     ob1        50       HDP recycled     HDP            Anomaly
     ob2        0        PE               PE             Pass
     ob3        30       PE recycled      PE recycled    Pass

我尝试过的代码:

     f=pp.groupby('Temp')['colB'].apply(lambda x: 
     x.str.contains('Recycled').any()).map({True:'Pass',False:'anomaly'})

1 个答案:

答案 0 :(得分:1)

尝试使用排名功能

data['Rank'] = data.groupby('Temp')['output'].rank(method='dense',ascending=True)
data['Final'] = data.groupby('Temp')['Rank'].rank(method='first',ascending=True)