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

如何用Pandas重塑DataFrame:拆分日期行并计算日均预算

解决Pandas日期区间拆分为单日记录并计算日均预算的问题

我来帮你搞定这个DataFrame的重塑需求,把每个日期区间拆成单日记录,同时算出对应的日均预算。下面是具体的实现步骤和代码:

步骤1:计算区间天数与日均预算

首先得先算出每个日期区间的总天数(注意要包含首尾两天,所以需要加1),再用总预算除以天数得到日均预算:

import pandas as pd

# 初始化你提供的数据集
data = {"start_date" : ["2018-04-30", "2018-05-01"] ,"end_date" : ["2018-05-01", "2018-05-02"] ,"budget" : [10, 12]}
df = pd.DataFrame(data)
df["start_date"] = pd.to_datetime(df["start_date"])
df["end_date"] = pd.to_datetime(df["end_date"])

# 计算每个区间的总天数
df['days'] = (df['end_date'] - df['start_date']).dt.days + 1
# 计算日均预算
df['daily_average'] = df['budget'] / df['days']

步骤2:拆分日期区间为单日记录

接下来用pd.date_range生成每个区间内的所有日期,再通过explode方法把日期列表拆成单独的行:

# 为每行生成对应的日期序列
df['date'] = df.apply(lambda row: pd.date_range(row['start_date'], row['end_date'], freq='D'), axis=1)
# 拆分日期列表,生成单日记录
df = df.explode('date').reset_index(drop=True)

步骤3:调整列顺序(可选)

如果需要和需求中的字段顺序对齐,可以重新排列列的位置:

# 保留需要的字段并调整顺序
df = df[['date', 'daily_average', 'days', 'start_date', 'end_date']]

最终结果

执行完上述代码后,你会得到如下的目标DataFrame:

datedaily_averagedaysstart_dateend_date
02018-04-305.022018-04-302018-05-01
12018-05-015.022018-04-302018-05-01
22018-05-016.022018-05-012018-05-02
32018-05-026.022018-05-012018-05-02

这个结果完全满足需求:每个单日都有独立记录,同时保留了原区间的起始/结束日期、总天数和日均预算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:43:57