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

Python如何从多列数据提取指定编码值并按诊断日期标记季度

可行实现方案

步骤1:批量筛选符合诊断规则的记录

不需要硬编码每个判断条件,先把需要匹配的「诊断类型+诊断编码」组合整理好,用向量化匹配完成筛选,适配数百万行的大规模数据,后续新增要匹配的编码只要调整目标编码集合即可,维护成本极低。
示例如下:

import pandas as pd
import numpy as np

# 提前把日期列转为datetime格式,仅需执行一次
diagnosis_df['diagnosis_date'] = pd.to_datetime(diagnosis_df['D列实际列名'])

# 按ICD类型分别定义要筛选的编码集合,新增编码直接往对应集合加即可
icd10_target_codes = {'J280', 'J285', 'J2854', 'J1289', 'J129'}
icd9_target_codes = {'478', '485', '490', '480'}

# 筛选符合条件的记录生成新dataframe,该操作为向量化运算,处理百万行数据效率很高
filtered_df = diagnosis_df[
    ((diagnosis_df['B列实际列名'] == 'ICD10') & diagnosis_df['C列实际列名'].isin(icd10_target_codes)) |
    ((diagnosis_df['B列实际列名'] == 'ICD9') & diagnosis_df['C列实际列名'].isin(icd9_target_codes))
].copy()

步骤2:按自然季度生成标记列

直接用pandas内置的日期季度提取能力生成季度标识,再通过独热编码生成对应季度的1标记:

# 生成「年份+季度」标识,格式如2023Q1、2023Q2
filtered_df['quarter'] = filtered_df['diagnosis_date'].dt.to_period('Q').astype(str)

# 生成季度标记列,对应诊断所在季度为1,其余为0
quarter_dummies = pd.get_dummies(filtered_df['quarter'], prefix='diagnose_q')
final_df = pd.concat([filtered_df, quarter_dummies], axis=1)

如果需要把季度标记合并回原始全量数据集,按行索引把final_df的标记列merge回原数据集,空值填充为0即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03