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

如何在Pandas中将多就诊患者长表转换为单患者单行的宽表格式

患者就诊记录行转列处理方案

将单患者对应多行的就诊数据,转换为单患者一行,各次就诊信息以就诊1_字段名、就诊2_字段名的形式拆分到多列,可通过Python的pandas工具实现,步骤如下:

1. 导入依赖库

import pandas as pd

2. 准备/导入原始数据

这里模拟符合你描述的原始就诊数据(可替换为你实际的数据集导入代码):

data = {
    '患者ID': ['P001', 'P001', 'P002'],
    '就诊日期': ['2023-01-05', '2023-03-10', '2023-02-15'],
    '诊断结果': ['感冒', '支气管炎', '高血压'],
    '开药名称': ['布洛芬', '头孢', '氨氯地平']
}
df = pd.DataFrame(data)

3. 为患者就诊记录添加序号

按患者ID分组,给每组内的就诊记录从1开始编号:

df['就诊序号'] = df.groupby('患者ID').cumcount() + 1

4. 透视转换数据格式

通过透视表将多行数据转为单行,并重命名列名:

# 生成透视表,以患者ID为行,就诊序号为列,聚合其他字段
pivoted_df = df.pivot_table(
    index='患者ID',
    columns='就诊序号',
    values=['就诊日期', '诊断结果', '开药名称'],
    aggfunc='first'
)

# 重命名列,格式为「就诊序号_字段名」
pivoted_df.columns = [f'就诊{col[1]}_{col[0]}' for col in pivoted_df.columns]

# 重置索引,让患者ID成为普通列
pivoted_df = pivoted_df.reset_index()

转换后的数据示例

患者ID就诊1_就诊日期就诊1_诊断结果就诊1_开药名称就诊2_就诊日期就诊2_诊断结果就诊2_开药名称
P0012023-01-05感冒布洛芬2023-03-10支气管炎头孢
P0022023-02-15高血压氨氯地平NaNNaNNaN

说明:若患者有更多次就诊,会自动生成就诊3_xxx等对应列;未发生的就诊字段会填充NaN,可根据需求替换为空白或其他默认值。

内容的提问来源于stack exchange,提问作者haasan foroozand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:10:28