根据分组中的键编辑数据帧字段

2024-10-06 14:31:46 发布

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

给定此数据帧:

import pandas as pd
  a = pd.DataFrame({
    'id': [1,2,3,4,5],
    'company_id': [11,11,22,33,55],
    'accSync': [True, False, False, False, True]
  })

我需要根据accSync字段为True修改给定company_id的所有行,这意味着如果给定company_id的任何行中有True,那么该company_id的所有行也需要更新为True

在这种情况下,company_id11中有一个True,因此第2行也应该更新为2, 11, True,而第1、3、4、5行应该不受影响

我尝试使用组合ifgroupbyany,但没有任何效果


Tags: 数据importidfalsetruedataframepandasas
2条回答
def checker(df):
    df["accSync"] = df["accSync"].any()
    return df

new_df = a.groupby(by="company_id").apply(checker)

结果:

   id  company_id  accSync
0   1          11     True
1   2          11     True
2   3          22    False
3   4          33    False
4   5          55     True 

IIUCtransform

a.groupby('company_id')['accSync'].transform('max')
Out[131]: 
0     True
1     True
2    False
3    False
4     True
Name: accSync, dtype: bool

分配回

a['accSync']= a.groupby('company_id')['accSync'].transform('max')

相关问题 更多 >