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

如何用Python识别大数据集中的布尔值并处理慢病分类字段

处理慢性疾病布尔列的Python实现方案

针对你提出的需求,用Pandas就能高效处理大数据集中的布尔值列,实现分类变量的转换。以下是具体步骤和代码:

步骤说明

  1. 加载受益人汇总数据集
  2. 定义需要处理的慢性疾病布尔列列表
  3. 计算每位成员的患病数量,生成对应的分类变量:
    • 患病数≥3时,标记为Multiple
    • 患病数<3时,拼接所有阳性诊断的列名

代码实现

import pandas as pd

# 加载数据集(替换为你解压后的文件路径)
df = pd.read_csv("DE1_0_2009_Beneficiary_Summary_File_Sample_20.csv")

# 定义目标慢性疾病列
disease_cols = [
    "SP_ALZHDMTA", "SP_CHF", "SP_CHRNKIDN", "SP_CNCR", 
    "SP_COPD", "SP_DEPRESSN", "SP_DIABETES", "SP_ISCHMCHT", 
    "SP_OSTEOPRS", "SP_RA_OA", "SP_STRKETIA"
]

# (可选)如果列是字符串格式(如"Y"/"N"),先转换为布尔值
# df[disease_cols] = df[disease_cols].map(lambda x: x == "Y")

# 计算每行的患病数量
df["disease_count"] = df[disease_cols].sum(axis=1)

# 生成诊断分类列
def get_diagnosis(row):
    positive = [col for col in disease_cols if row[col]]
    return "Multiple" if len(positive) >=3 else ", ".join(positive)

df["diagnosis_category"] = df.apply(get_diagnosis, axis=1)

# 查看结果示例
print(df[["diagnosis_category", "disease_count"]].head())

关键说明

  • 对于大数据集,Pandas的apply在单线程下可能稍慢,若需要极致效率,可以改用向量化操作(如结合pd.melt和groupby拼接列名),但上述代码足够应对绝大多数场景。
  • 确保布尔列的类型正确:如果原始数据是数字1/0,sum()直接生效;如果是字符串,需要先转换为布尔值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:33:24