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

Python:按日期顺序为患者数据创建状态列的技术需求

按日期排序生成患者状态列解决方案

原始数据构造

首先构造题目中的原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'patient_id': [1, 2, 3, 3, 4],
    'diagnosis_code': ['Diabetes', 'Diabetes', 'Diabetes', 'Heart Failure', 'Diabetes'],
    'diagnosis_date': ['2014-08-05', '2019-06-07', '2015-06-18', '2018-12-25', '2014-08-11'],
    'medication_name': ['A', 'A', 'B', 'B', 'A'],
    'medication_date': ['2017-12-15', '2014-03-12', '2017-11-08', '2017-11-08', '2017-07-07']
})

# 转换日期列为datetime格式,确保排序准确
df['diagnosis_date'] = pd.to_datetime(df['diagnosis_date'])
df['medication_date'] = pd.to_datetime(df['medication_date'])

处理步骤

  1. 拆分并合并事件:将诊断和用药拆分为独立的事件记录,统一列名后合并
# 提取诊断事件
diagnosis_events = df[['patient_id', 'diagnosis_code', 'diagnosis_date']].rename(
    columns={'diagnosis_code': 'state', 'diagnosis_date': 'event_date'}
)

# 提取用药事件
medication_events = df[['patient_id', 'medication_name', 'medication_date']].rename(
    columns={'medication_name': 'state', 'medication_date': 'event_date'}
)

# 合并所有事件并去重(同一患者同一状态同一日期仅保留一次)
all_events = pd.concat([diagnosis_events, medication_events]).drop_duplicates()
  1. 排序并编号事件:按患者ID和事件日期排序,给每个患者的事件按顺序编号
# 按患者和日期升序排序
all_events_sorted = all_events.sort_values(['patient_id', 'event_date'])

# 生成事件序号(从1开始)
all_events_sorted['state_num'] = all_events_sorted.groupby('patient_id').cumcount() + 1
  1. 转宽表并格式化输出:将长格式数据转为宽格式,重命名列并填充缺失值
# 转宽表
df_output = all_events_sorted.pivot(
    index='patient_id',
    columns='state_num',
    values='state'
).rename(columns=lambda x: f'State_{x}').reset_index()

# 填充缺失值为NA,匹配期望输出格式
df_output = df_output.fillna('NA')

最终输出

执行上述代码后,df_output结果如下:

patient_id    State_1    State_2         State_3
0           1    Diabetes          A              NA
1           2          A    Diabetes              NA
2           3    Diabetes          B  Heart Failure
3           4    Diabetes          A              NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:24:29