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

在R语言中基于日期范围聚合amount列的实现方案

解决方案

前提说明

假设df2中的id字段与df1中的patient_id为同一患者标识(若实际对应关系不同,可调整merge时的关联字段)。同时确保所有日期字段为datetime类型,若不是,先执行类型转换:

import pandas as pd

# 转换日期字段为datetime类型
df1['date_of_admission'] = pd.to_datetime(df1['date_of_admission'])
df2['date_of_admission'] = pd.to_datetime(df2['date_of_admission'])
df2['date_of_discharge'] = pd.to_datetime(df2['date_of_discharge'])

步骤实现

  1. 关联两个数据框
    通过患者ID将df1和df2合并,保留所有需要的字段:

    merged_df = df1.merge(df2, left_on='patient_id', right_on='id', suffixes=('_df1', '_df2'))
    
  2. 筛选符合日期区间的记录
    提取df1中入院日期落在对应患者df2入院-出院区间内的记录:

    filtered_df = merged_df[
        (merged_df['date_of_admission_df1'] >= merged_df['date_of_admission_df2']) &
        (merged_df['date_of_admission_df1'] <= merged_df['date_of_discharge'])
    ]
    
  3. 按患者分组求和
    对每个唯一的patient_id,汇总符合条件的amount,得到结果df3:

    df3 = filtered_df.groupby('patient_id')['amount'].sum().reset_index()
    

补充说明

如果df2中同一患者存在多个入院-出院区间,上述代码会自动匹配所有符合条件的区间,并将对应df1中的amount全部求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:03:18