pandas DataFrame满足条件时同一col1对应的col2行统一赋值方法
实现方法
你可以通过pandas的groupby+transform逻辑实现需求,由于你的col2是0/1二值字段,组内取最大值即可直接满足「只要有1就全组设为1」的规则,写法如下:
import pandas as pd # 你的原始数据 df = pd.DataFrame({'col1': ['A', 'A', 'B', 'C', 'D', 'D'], 'col2': [1,0,1,0,0,1]}) # 核心逻辑:按col1分组后取col2的最大值回填 df['col2'] = df.groupby('col1')['col2'].transform('max')
执行后输出的df就是你期望的结果:
| col1 | col2 |
|---|---|
| A | 1 |
| A | 1 |
| B | 1 |
| C | 0 |
| D | 1 |
| D | 1 |
通用扩展写法
如果后续你需要适配非二值字段的类似判断需求(只要组内存在任意符合条件的值就全组统一赋值),可以用更灵活的lambda写法:
# 逻辑:判断组内col2是否存在等于1的值,存在则全组设为1,否则设为0 df['col2'] = df.groupby('col1')['col2'].transform(lambda x: 1 if (x==1).any() else 0)
内容的提问来源于stack exchange,提问作者bgeaibreyi
相关产品推荐
相关产品推荐

