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

Pandas实操:如何处理两列数据并完成患者分组?

嘿,我来帮你优化这个患者分组的逻辑!你的思路方向是对的,但可以用更简洁高效的方式一次性完成分组,不用拆分多个DataFrame来回折腾~

先回顾下你的需求:把患者分成三组——从未需进一步评估(仅'no')、直接接受进一步评估(仅'yes')、两种情况均有(既有'no'也有'yes')。

首先明确你的原始数据集示例:

datepatient_idclinical_evaluation
02019-08-26 13:32:43.0191628430no
12019-11-15 17:55:11.3648778430no
22019-10-07 18:23:29.61135114338yes
32019-11-04 20:16:28.61096514338no
42019-12-02 20:56:55.96635414338no
优化方案:用GroupBy一次性完成分组判断

步骤1:统计每个患者的评估类型集合

我们可以用groupby('patient_id')结合agg来获取每个患者所有的clinical_evaluation值的集合,这样就能快速判断属于哪一组:

import pandas as pd

# 假设你的数据集是df
patient_eval = df.groupby('patient_id')['clinical_evaluation'].agg(set).reset_index()
patient_eval.columns = ['patient_id', 'eval_types']

这一步会得到每个患者对应的评估类型集合,比如患者8430的集合是{'no'},患者14338的集合是{'yes', 'no'}。

步骤2:根据集合标记分组

这里提供两种方法,你可以根据习惯选择:

方法一:用np.select(更高效,适合大数据集)

import numpy as np

# 定义分组条件和对应标签
conditions = [
    patient_eval['eval_types'] == {'yes'},
    patient_eval['eval_types'] == {'no'},
    patient_eval['eval_types'] == {'yes', 'no'}
]
choices = ['直接接受进一步评估', '从未需进一步评估', '两种情况均有']

# 给每个患者分配分组
patient_eval['group'] = np.select(conditions, choices, default='未知')

方法二:用apply(更直观,逻辑清晰)

def get_group(eval_types):
    if 'yes' in eval_types and 'no' not in eval_types:
        return '直接接受进一步评估'
    elif 'no' in eval_types and 'yes' not in eval_types:
        return '从未需进一步评估'
    elif 'yes' in eval_types and 'no' in eval_types:
        return '两种情况均有'
    else:
        return '未知'

patient_eval['group'] = patient_eval['eval_types'].apply(get_group)

步骤3:查看分组结果

运行后patient_eval会包含每个患者的分组信息,示例结果如下:

patient_ideval_typesgroup
8430{'no'}从未需进一步评估
14338{'yes', 'no'}两种情况均有

可选:把分组标签合并回原始数据集

如果需要把分组信息加到原始的每条记录里,可以用merge:

df_with_group = df.merge(patient_eval[['patient_id', 'group']], on='patient_id', how='left')

为什么这个方案更优?

  • 代码更简洁:不需要拆分多个DataFrame,一次性完成统计和分组
  • 效率更高:GroupBy操作比多次筛选+isin更高效,尤其是数据集较大时
  • 可扩展性强:如果后续有更多评估类型(比如'pending'),只需要调整条件判断即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:22:56