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

使用Pandas DataFrame计算日期差、最大最小日期及日期计数

患者治疗记录统计解决方案

你可以直接用pandas的groupby.agg()方法一次性完成所有需求,不需要手动遍历分组,代码更简洁高效:

import pandas as pd

# 你已有的预处理逻辑
df = Patient_Dates
df['Dates'] = pd.to_datetime(df['Dates'])

# 单语句完成三个需求的聚合计算
stat_result = df.groupby('Patient_ID', as_index=False)['Dates'].agg(
    总治疗时长_天 = lambda x: (x.max() - x.min()).days,
    最小治疗日期 = 'min',
    最大治疗日期 = 'max',
    治疗总次数 = 'count'
)

# 若需要导出结果到本地可执行以下代码
# stat_result.to_csv('患者治疗统计结果.csv', index=False, encoding='utf-8-sig')

输出的stat_result数据表每列对应你的需求:

  • 总治疗时长_天:对应A需求,直接返回整数天数,无需额外处理timedelta格式
  • 最小治疗日期、最大治疗日期:对应B需求
  • 治疗总次数:对应C需求

如果你想基于你现有循环代码修改,调整后的写法如下:

df=Patient_Dates
df['Dates'] = pd.to_datetime(df['Dates'])
grouped = df.groupby(['Patient_ID'])
op = []
for Name, group in grouped:
    min_date = group['Dates'].min()
    max_date = group['Dates'].max()
    LengthOfTreatment_days = (max_date - min_date).days
    treat_cnt = group['Dates'].count()
    op.append([Name, LengthOfTreatment_days, min_date, max_date, treat_cnt])

# 可转为带表头的DataFrame方便使用
result_df = pd.DataFrame(op, columns=['Patient_ID', '总治疗时长_天', '最小治疗日期', '最大治疗日期', '治疗总次数'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:09