基于同PROJECT下ID重复情况为Pandas DataFrame添加Unique标识列
实现方案
直接使用pandas内置的分组统计功能即可完成需求,无需自行写循环遍历:
# 按PROJECT+ID分组统计出现次数,映射为Yes/No x['Unique'] = x.groupby(['PROJECT', 'ID'])['ID']\ .transform('count')\ .apply(lambda cnt: 'Yes' if cnt == 1 else 'No')
逻辑说明
- 第一步
groupby(['PROJECT', 'ID'])会将属于同一个项目、且ID相同的行划分为同一组 - 第二步
transform('count')会统计每个分组的行数,返回的结果长度和原DataFrame完全一致,每一行的值就是该行所属分组的行数 - 第三步
apply将统计结果做映射:分组行数等于1说明该ID在对应项目中仅出现一次,赋值Yes,出现多次则赋值No
运行上述代码后得到的结果和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Murcie
相关产品推荐
相关产品推荐

