给出此dataFrame:
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]
})
我需要基于company_id
字段为True来修改给定accSync
的所有行,这意味着如果给定company_id
的任何行中都包含true,则所有行因为company_id
也需要更新为真实。
在这种情况下,company_id
11中有一个True
,因此第2行也应更新为2, 11, True
,而第1,3,4,5行应不受影响
我尝试使用groupby
和any
的组合,但没有成功。
答案 0 :(得分:2)
IIUC transform
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')
答案 1 :(得分:0)
id company_id accSync
0 1 11 True
1 2 11 True
2 3 22 False
3 4 33 False
4 5 55 True
结果:
{{1}}