Pandas处理ID重复数据集时新增列存储各ID对应的唯一药物列表
实现方法
你可以通过Pandas的分组聚合+映射对齐逻辑完成需求,以下是两种可直接运行的实现方案:
方案1:使用transform直接对齐(推荐)
该方法无需额外构造映射表,分组计算结果会自动匹配原数据集的行索引,代码更简洁:
import pandas as pd # 示例数据构造,实际使用时替换为读取你的数据集即可,如df = pd.read_csv("你的文件路径.csv") df = pd.DataFrame({ 'ID': [1, 1, 1, 2, 3, 3, 3], 'Medication': ['a', 'b', 'c', 'h', 'a', 'a', 'c'] }) # 核心逻辑:按ID分组,对药物列先去重再拼接为逗号分隔字符串 df['Medications'] = df.groupby('ID')['Medication'].transform(lambda x: ', '.join(x.unique()))
方案2:先构造映射表再匹配
如果你需要单独留存每个ID对应的唯一药物映射关系,可以用该方法:
# 构造ID到唯一药物字符串的映射字典 medication_map = df.groupby('ID')['Medication'].unique().str.join(', ') # 将映射结果匹配到原数据集的每一行 df['Medications'] = df['ID'].map(medication_map)
两种方案运行后得到的结果都和你期望的输出结构完全一致,ID对应的重复药物会自动去重,同一ID的所有行都会填充相同的唯一药物拼接结果。
内容的提问来源于stack exchange,提问作者Denisse
相关产品推荐
相关产品推荐

