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

如何使用Pandas提取患者治疗drug_code序列并量化治疗模式

问题:统计患者用药序列模式及频次

尽管所有患者因同一疾病入院治疗,但基于个体当前状况,其治疗序列略有差异。我们的目标是收集所有治疗序列并量化这些模式,现求助用Pandas实现该需求。

当前数据集

import pandas as pd

# 修正原数据集中的语法错误('patient'键缺失闭合引号)
df2 = pd.DataFrame({
    'patient': ['one', 'one', 'one', 'two','two', 'two','three','three', 'three'],    
    'drug_code': ['011', '012', '013', '012', '013', '011','011', '012', '013'],        
    'date': ['11/20/2022', '11/22/2022', '11/23/2022', '11/8/2022', '11/9/2022', '11/14/2022','11/8/2022', '11/9/2022', '11/14/2022']
})

df2['date'] = pd.to_datetime(df2['date'])

期望结果

code_patterns = pd.DataFrame({
    'pattern':['011-012-013','012-013-011'],
    'frequency': [2,1]
})

解决方案

实现步骤

  • 按患者分组,对每个患者的记录按日期排序,确保用药顺序符合时间先后
  • 将每个患者的drug_code按顺序拼接成以-分隔的字符串
  • 统计每个拼接字符串的出现频次
  • 转换为目标格式的DataFrame

代码实现

# 按患者分组,排序后拼接用药编码
patient_patterns = df2.sort_values(['patient', 'date'])\
                     .groupby('patient')['drug_code']\
                     .apply(lambda x: '-'.join(x))

# 统计频次并转换为目标结构
code_patterns = patient_patterns.value_counts()\
                                .reset_index()\
                                .rename(columns={'drug_code': 'pattern', 'count': 'frequency'})

# 输出结果
print(code_patterns)

代码说明

  • sort_values(['patient', 'date']):保证每个患者的用药记录按时间顺序排列
  • groupby('patient')['drug_code'].apply(lambda x: '-'.join(x)):为每个患者生成唯一的用药序列字符串
  • value_counts():自动统计各序列的出现次数,reset_index()和rename()将结果调整为目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:20:41