Pandas中指定两列重复且第三列不同时修改Group列0值为1
Pandas 分组修正Group列值实现
处理逻辑
不需要逐行遍历全表,用pandas原生分组操作处理性能更高,判定和修改规则如下:
- 以
SEQUENCE、ID两列的组合值为分组维度拆分全表数据 - 筛选同时满足两个条件的分组:
- 组内记录数大于1(即两列组合值存在重复)
- 组内
Group列的取值不唯一(同时存在0、1两种差异值)
- 对符合条件的分组,将组内所有
Group列取值为0的记录统一修改为1;其余分组所有记录取值保持不变
代码实现
import pandas as pd # 构造示例输入数据 df = pd.DataFrame({ 'SEQUENCE': ['ABCD', 'ABCD', 'BACD'], 'ID': ['TG', 'TG', 'LK'], 'Group': [0, 1, 0] }) # 标记所有需要修正的记录所属分组 group_flag = df.groupby(['SEQUENCE', 'ID'])['Group'].transform( lambda col: (len(col) > 1) and (col.nunique() > 1) ) # 执行值替换 df.loc[group_flag & (df['Group'] == 0), 'Group'] = 1
处理结果
执行代码后输出结果完全匹配预期:
- SEQUENCE=ABCD、ID=TG的两条重复记录,Group值均更新为1
- SEQUENCE=BACD、ID=LK的单条无重复记录,Group值保持0不变
内容的提问来源于stack exchange,提问作者buny
相关产品推荐
相关产品推荐

