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

基于日期计算过去7天AcuteLegs负荷总和的Python问题

解决日期缺失时的7天负荷总和计算问题

针对需求中缺失日期需按0计入7天总和的要求,我们需要先补全完整日期序列,再基于时间窗口计算滚动总和,具体步骤如下:

步骤1:标准化日期格式与索引

先将Date列转换为datetime类型,并设置为DataFrame索引,为后续日期操作做准备:

import pandas as pd

# 假设原始数据存储在df中
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

步骤2:补全缺失日期

生成从数据最小日期到最大日期的完整每日序列,并用0填充缺失日期的AcuteLegs_1day值:

# 生成覆盖所有日期的完整序列
full_date_range = pd.date_range(start=df.index.min(), end=df.index.max(), freq='D')
# 重新索引,缺失日期的负荷值填充为0
df_full = df.reindex(full_date_range, fill_value=0)

步骤3:计算符合要求的7天总和

使用时间窗口滚动求和,设置window='7D'指定7天周期,closed='left'确保计算当前日期**之前7天(不含当天)**的总和,与你原代码shift(1)的逻辑对齐:

df_full['AcuteLegs_7days'] = df_full['AcuteLegs_1day'].rolling(window='7D', closed='left').sum()

步骤4:还原原始数据的日期行

最后筛选出原始数据中存在的日期,得到最终结果:

# 还原回原始日期的记录,并重置索引
df_final = df_full.loc[df.index].reset_index().rename(columns={'index': 'Date'})

结果验证

以2021-12-13为例,过去7天覆盖2021-12-06至2021-12-12,其中12-06至12-08无数据(按0计算),12-09为450、12-10为840,12-11至12-12为0,总和为1290,这就是2021-12-13对应的AcuteLegs_7days值。


内容的提问来源于stack exchange,提问作者E Jager de

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:30:58