You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现多行转单行:将多行值合并为单字段列表

合并患者同一就诊日期的多条诊断记录

现有数据集包含患者ID、就诊日期、诊断代码(Dx)及诊断描述(DxDesc),同一患者在同一日期下有多条诊断记录,需按ID和日期合并为单行,将诊断代码和诊断描述分别合并为单个字段的列表形式。

原始数据集代码

import pandas as pd

data = {'ID':[1,1,1,2,2,3,4,4,4,5, 1, 1],
        'Date':['8/18/2022', '8/18/2022', '8/18/2022', '8/18/2022', '8/18/2022', '8/18/2022', '8/18/2022', '8/18/2022',
               '8/18/2022', '8/18/2022', '8/19/2022', '8/19/2022'],
        'Dx':['J45.1', 'D64.0', '401.9', 'J45.0', 'J45.1', 'D64.0', '401.9', 'J45.0', 'X94', 'Z17', 'J45.1', 'NX87.0'],
        'DxDesc' : ['Asthma', 'Anemia', 'Asthma other', 'Asthma', 'Hypertension', 'Other disease', 'Other disease 2', 
                    'Asthma other', 'Something', 'Something else', 'Asthma', 'Asthma exacerbation']
        }

df = pd.DataFrame(data)

解决方案代码

通过groupby按ID和日期分组,再用agg将诊断代码和描述合并为指定格式的字符串:

# 分组并合并字段
result_df = df.groupby(['ID', 'Date']).agg(
    DxCodes=('Dx', lambda x: ", ".join(f"'{item}'" for item in x)),
    DxDescs=('DxDesc', lambda x: ", ".join(f"'{item}'" for item in x))
).reset_index()

# 查看结果
print(result_df)

输出结果

IDDateDxCodesDxDescs
18/18/2022'J45.1', 'D64.0', '401.9''Asthma', 'Anemia', 'Asthma other'
18/19/2022'J45.1', 'NX87.0''Asthma', 'Asthma exacerbation'
28/18/2022'J45.0', 'J45.1''Asthma', 'Hypertension'
38/18/2022'D64.0''Other disease'
48/18/2022'401.9', 'J45.0', 'X94''Other disease 2', 'Asthma other', 'Something'
58/18/2022'Z17''Something else'

内容的提问来源于stack exchange,提问作者Sandra T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:18:33