如何在Python pandas中将相同Subject_ID的DRUG列内容合并至单行
Python pandas 实现分组拼接药物名的方法
你需要按Subject_ID字段对数据集做分组聚合,同组下的DRUG字段用逗号加空格拼接所有值,同组下的LOS字段直接取任意一个值即可(因为同一个Subject_ID对应的LOS完全一致)。
完整实现代码如下:
import pandas as pd # 如果你是从文件读取数据集,替换下方构造DataFrame的代码即可,例如 df = pd.read_csv("你的数据集路径.csv") df = pd.DataFrame({ 'Subject_ID': [2456, 2456, 12345, 12345, 12345], 'DRUG': ['Syringe (Neonatal) *NS*', 'Heparin', 'Syringe (Neonatal) *NS*', 'ampicillin', 'gentamicin'], 'LOS': [1.56, 1.56, 0.78, 0.78, 0.78] }) # 核心分组聚合逻辑 result_df = df.groupby('Subject_ID', as_index=False).agg( # 拼接同ID所有药物名称,需要去重的话可改为 lambda x: ', '.join(x.unique()) DRUG = ('DRUG', lambda x: ', '.join(x)), # 取同ID第一个LOS值即可 LOS = ('LOS', 'first') ) # 打印结果验证 print(result_df)
执行后得到的result_df就是你需要的目标格式数据,可以直接用to_csv或者to_excel导出到文件。
内容的提问来源于stack exchange,提问作者Farzana
相关产品推荐
相关产品推荐

