如何对具有相同ID的行应用条件?

2024-09-28 18:50:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,如:

df= [ ID  child_ID  STATUS1  
      123  11        OK    
      123  22        KO 
      123  23        OK 
      124  56        OK  
      124  45        OK

我想通过ID获得最终状态,如果其中一个孩子的ID是KO,这意味着我的最终状态是KO 所以我想要一个数据帧,比如:

f= [      ID  Child_ID STATUS1  Statusfinal
          123  11       OK       KO
          123  22       KO       KO
          123  23       OK       KO
          124  56       OK       OK
          124  45       OK       OK 

我怎么做


Tags: 数据idchilddf状态孩子okko
1条回答
网友
1楼 · 发布于 2024-09-28 18:50:58

你可以做:

g = df.groupby('ID')
df['Statusfinal'] = np.where((g['STATUS1'].transform(lambda x: x.eq('KO').any())), 'KO',df['STATUS1'])

输出

df['Statusfinal']
Out[2]: 
0    KO
1    KO
2    KO
3    OK
4    OK
Name: Statusfinal, dtype: object

或:

正如piRSquared在评论中指出的:

df['Statusfinal'] = np.where(df.STATUS1.eq('KO').groupby(df.ID).transform('any'), 'KO', df['STATUS1'])

相关问题 更多 >