Python pandas按Project ID合并重复行 唯一值用逗号拼接
pandas按Project ID去重拼接同列唯一值实现方案
实现代码
直接在你原有读取代码的基础上追加分组聚合逻辑即可,完整代码如下:
import pandas as pd # 原有读取CSV代码保持不变 df = pd.read_csv('Project.csv', low_memory=False) # 按Project ID分组,所有列去重后用逗号拼接 df_processed = df.groupby('Project ID', as_index=False).agg( lambda single_col: ','.join(single_col.dropna().astype(str).unique()) )
逻辑说明
- 分组逻辑:以
Project ID为分组键,所有同ID的行会被归为同一组处理,as_index=False保证处理后Project ID仍是普通列,不会被设为索引 - 列处理逻辑:逐列对每组数据做处理
dropna():先剔除空值,避免拼接出无效的空字符串astype(str):统一将列值转为字符串格式,兼容数字、日期等非字符串类型的列,防止拼接报错unique():提取当前列在同组内的唯一值,自动过滤重复内容,符合你要求的仅拼接唯一值的规则','.join():将去重后的值用半角逗号拼接为单个字符串
效果校验
可以运行以下代码确认重复项已经被完全处理:
# 统计处理前后的重复Project ID数量 print(f"处理前重复Project ID行数:{df.duplicated('Project ID').sum()}") print(f"处理后重复Project ID行数:{df_processed.duplicated('Project ID').sum()}")
正常情况下处理后重复Project ID行数输出为0,即所有Project ID唯一。由于你提到同ID行的Name字段本身重复,拼接后Name列不会出现重复内容;如果存在同ID对应不同Name的异常数据,代码也会自动将不同的Name值拼接保留,不会丢数据。
内容的提问来源于stack exchange,提问作者Nirakar Nepal
相关产品推荐
相关产品推荐

