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

Pandas如何按patient_ID分组判断保险类型并生成新列

患者保险类型分类标记实现方案

需求说明

处理患者就诊保险数据时,已将保险统一归为Public(公立)、Private(私立)两类,需要新增Simple列实现以下规则:

  • 按patient_ID分组,同一患者的所有就诊记录为一组
  • 若组内Public_Private取值同时包含公立、私立两类,该组所有行的Simple列标记为Mixed
  • 若组内Public_Private取值完全一致,Simple列直接返回对应的保险类型值
  • 方案需要适配不同患者不等长的就诊记录数,不需要提前固定分组长度

原始数据集构造代码

import pandas as pd
data = {'patient_ID': [1,1,1,2,2,3,3,3,4,4,4,4],
   'Public_Private': ['Public', 'Public', 'Public',
                      'Private', 'Public','Private', 'Private', 
                      'Private', 'Private', 'Public', 'Private', 
                      'Public']}
df = pd.DataFrame(data)

实现代码

通过pandas分组转换功能直接实现,无需额外合并操作:

df['Simple'] = df.groupby('patient_ID')['Public_Private'].transform(
    lambda group: 'Mixed' if group.nunique() > 1 else group.iloc[0]
)

逻辑说明

  • groupby('patient_ID')按患者ID自动拆分数据分组,天然支持每个患者任意条数的就诊记录
  • transform方法会将分组计算的结果按原表索引映射回每一行,不需要手动做表关联
  • group.nunique()统计当前分组内保险类型的唯一值数量:数量大于1说明患者使用了多类保险,标记为Mixed;数量为1说明保险类型统一,直接取组内任意位置的值即可(全组值一致,取第一个值无歧义)

运行结果

执行代码后输出的数据集符合规则要求,若某患者同时存在两类保险记录,代码会自动识别标记为Mixed,不需要调整逻辑:

patient_IDPublic_PrivateSimple
1PublicPublic
1PublicPublic
1PublicPublic
2PrivateMixed
2PublicMixed
3PrivatePrivate
3PrivatePrivate
3PrivatePrivate
4PrivateMixed
4PublicMixed
4PrivateMixed
4PublicMixed

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:36:22