如何在具有相同ID的行上应用条件

2024-06-28 14:44:27 发布

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

我有一个数据帧,如:

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

我想通过ID获得最终状态,如果其中一个childid是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状态okkostatus1
1条回答
网友
1楼 · 发布于 2024-06-28 14:44:27

我将首先计算一个额外的布尔列,然后使用groupby聚合:

resul = df.assign(FinalStatus = ((df['STATUS1'].str.lower() == 'ok') &
                  (df['STATUS2'].str.lower() == 'ok'))
          ).groupby('ID').agg({'STATUS1': 'first',
                   'STATUS2': 'first',
                   'FinalStatus': all}).reset_index()

在最后一列添加正确的标签,仅此而已:

resul['FinalStatus'] = np.where(resul['FinalStatus'], 'OK', 'KO')

给出:

   ID STATUS1 STATUS2 FinalStatus
0  12      OK      OK          KO
1  13      OK      OK          OK

相关问题 更多 >