如何用Python识别大数据集中的布尔值并处理慢病分类字段
处理慢性疾病布尔列的Python实现方案
针对你提出的需求,用Pandas就能高效处理大数据集中的布尔值列,实现分类变量的转换。以下是具体步骤和代码:
步骤说明
- 加载受益人汇总数据集
- 定义需要处理的慢性疾病布尔列列表
- 计算每位成员的患病数量,生成对应的分类变量:
- 患病数≥3时,标记为
Multiple - 患病数<3时,拼接所有阳性诊断的列名
- 患病数≥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
相关产品推荐
相关产品推荐

