我正在尝试创建一个新列,其中包含基于活动持续时间的平均每月预算
我当前的数据集如下所示
客户 | 开始日期 | 结束日期 | 活动 | 总预算 |
---|---|---|---|---|
ABC | 2024年1月1日 | 2024年1月31日 | 123 | 1,000 |
防御 | 2024年1月1日 | 2024年3月31日 | 456 | 15,000 |
XYZ | 2024年1月1日 | 2024年6月30日 | 789 | 60,000 |
我想做的是根据开始/结束日期的持续时间平均划分每行的总预算列
第 1 行:1 个月
第 2 行:3 个月
第 3 行:6 个月
等等
我不确定从哪里开始尝试编写此代码,所以我想知道这是否可以做到?
我的预期结果如下
客户 | 开始日期 | 结束日期 | 活动 | 总预算 | 平均每月预算 |
---|---|---|---|---|---|
ABC | 2024年1月1日 | 2024年1月31日 | 123 | 1,000 | 1,000 |
防御 | 2024年1月1日 | 2024年3月31日 | 456 | 15,000 | 3,000 |
XYZ | 2024年1月1日 | 2024年6月30日 | 789 | 60,000 | 10,000 |
# optional: convert dates to datetime if they aren't already
df["Start Date"] = pd.to_datetime(df["Start Date"], format="%d/%m/%Y")
df["End Date"] = pd.to_datetime(df["End Date"], format="%d/%m/%Y")
df["Avg Monthly Budget"] = df["Total Budget"] / (
(df["End Date"] - df["Start Date"]).dt.days // 30
)
结果:
Client Start Date End Date Campaign Total Budget Avg Monthly Budget
0 ABC 2024-01-01 2024-01-31 123 1000 1000.0
1 DEF 2024-01-01 2024-03-31 456 15000 5000.0
2 XYZ 2024-01-01 2024-06-30 789 60000 10000.0