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

如何用Pandas按Key分组计算readmit列:首次出院日与入院日间隔天数

解决方案

核心思路

按Key分组提取每组的首次出院日期(discharge最小值),将该日期与每条记录的入院日期(admit)做差值计算,得到间隔天数。

步骤与代码

  1. 确保日期列是datetime类型
    若你的日期还未转换为datetime格式,先执行以下代码:

    import pandas as pd
    
    # 假设你的DataFrame名为df,列包含Key、admit、discharge
    df['admit'] = pd.to_datetime(df['admit'])
    df['discharge'] = pd.to_datetime(df['discharge'])
    
  2. 提取每组的首次出院日期并合并回原表

    # 按Key分组,获取每组最早的discharge日期
    first_discharge = df.groupby('Key')['discharge'].min().reset_index(name='first_discharge')
    # 将首次出院日期合并到原DataFrame中
    df = df.merge(first_discharge, on='Key', how='left')
    
  3. 计算间隔天数并生成readmit列

    # 计算admit日期与首次discharge的天数差,结果为整数天数
    df['readmit'] = (df['admit'] - df['first_discharge']).dt.days
    

    若需要间隔的绝对值(忽略正负,只看天数差),可修改为:

    df['readmit'] = abs(df['admit'] - df['first_discharge']).dt.days
    

示例验证

假设原始数据:

Keyadmitdischarge
A2023-01-012023-01-05
A2023-01-072023-01-10
B2023-02-012023-02-03
B2023-02-052023-02-08

执行代码后得到的结果:

Keyadmitdischargefirst_dischargereadmit
A2023-01-012023-01-052023-01-05-4
A2023-01-072023-01-102023-01-052
B2023-02-012023-02-032023-02-03-2
B2023-02-052023-02-082023-02-032

常见问题排查

  • 若之前代码失败,大概率是日期未转换为datetime类型,导致无法计算差值;
  • 若分组后首次出院日期提取错误,检查groupby的键是否正确,以及是否用min()获取最早日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:12:37