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

如何在Pandas中对DataFrame补全日期并计算累计求和值?

解决Pandas中补全日期并计算累计求和的问题

原始数据

给定如下DataFrame:

Date        Value
2023-05-20  2
2023-05-22  4
2023-05-22  3
2023-05-24  5

需求:补全最小日期到最大日期之间的所有日期,并计算截至当日的累计求和值,最终结果如下:

Date        ValueCum
2023-05-20  2
2023-05-21  2
2023-05-22  9
2023-05-23  9
2023-05-24  14

实现步骤

1. 预处理数据

先导入pandas,将数据转为DataFrame,并把Date列转为日期类型:

import pandas as pd

# 构造原始数据
data = {
    'Date': ['2023-05-20', '2023-05-22', '2023-05-22', '2023-05-24'],
    'Value': [2, 4, 3, 5]
}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])

2. 按日期聚合求和

把同一天的多条记录合并,计算单日的总Value:

daily_sum = df.groupby('Date')['Value'].sum().reset_index()

这一步后得到的中间结果:

Date  Value
0 2023-05-20      2
1 2023-05-22      7
2 2023-05-24      5

3. 生成完整日期序列

根据原始数据的最小、最大日期,生成连续的日期索引:

date_range = pd.date_range(start=df['Date'].min(), end=df['Date'].max())
full_dates = pd.DataFrame({'Date': date_range})

4. 合并并填充缺失值

将聚合后的单日数据和完整日期序列合并,缺失的Value用0填充:

merged_df = pd.merge(full_dates, daily_sum, on='Date', how='left').fillna(0)

5. 计算累计求和

对填充后的Value列计算累计求和,得到目标列ValueCum:

merged_df['ValueCum'] = merged_df['Value'].cumsum().astype(int)
# 保留需要的列
result = merged_df[['Date', 'ValueCum']]

最终结果

运行上述代码后,result即为需求中的目标DataFrame:

Date  ValueCum
0 2023-05-20         2
1 2023-05-21         2
2 2023-05-22         9
3 2023-05-23         9
4 2023-05-24        14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:03:27