如何根据营销活动时长拆分Total Budget列计算Avg Monthly Budget
计算营销活动月均预算的实现方案
以下是基于Python Pandas库的实现步骤,能帮你快速生成含Avg Monthly Budget列的目标数据集:
步骤1:准备依赖与加载数据
首先导入必要的库,加载你的数据集(以CSV格式为例):
import pandas as pd from dateutil.relativedelta import relativedelta # 用于精确计算月份差 # 加载数据集,替换为你的文件路径 df = pd.read_csv('your_campaign_data.csv')
步骤2:转换日期格式
先把Start Date和End Date列转为datetime类型,确保日期计算准确:
df['Start Date'] = pd.to_datetime(df['Start Date'], errors='coerce') df['End Date'] = pd.to_datetime(df['End Date'], errors='coerce')
步骤3:计算活动时长(月数)
用relativedelta计算精确的月份时长(包含年转月、剩余月数,再按平均每月30.44天折算剩余天数):
def get_month_duration(start_date, end_date): # 处理日期为空的情况 if pd.isna(start_date) or pd.isna(end_date): return 0 delta = relativedelta(end_date, start_date) # 总月数 = 年数*12 + 月数 + 天数/平均每月天数 total_months = delta.years * 12 + delta.months + delta.days / 30.44 return max(total_months, 0.01) # 避免除以0,最小设为0.01个月 df['Duration (Months)'] = df.apply(lambda row: get_month_duration(row['Start Date'], row['End Date']), axis=1)
步骤4:计算月均预算
将Total Budget除以时长月数,得到月均预算:
df['Avg Monthly Budget'] = df['Total Budget'] / df['Duration (Months)']
最终数据集示例
处理后的数据集会新增Duration (Months)和Avg Monthly Budget列,结构如下:
| Client | Start Date | End Date | Campaign | Total Budget | Duration (Months) | Avg Monthly Budget |
|---|---|---|---|---|---|---|
| Client A | 2023-01-01 | 2023-03-31 | Summer Sale | 3000 | 3.0 | 1000.0 |
| Client B | 2023-05-15 | 2023-06-10 | Launch Campaign | 1500 | 0.88 | 1704.55 |
注意事项
- 如果你的数据集是Excel格式,可改用
pd.read_excel()加载 - 若只需要按整月计算(忽略天数),可修改
get_month_duration函数,去掉delta.days / 30.44部分 - 需确保
Total Budget列是数值类型,若为字符串需先转换:df['Total Budget'] = pd.to_numeric(df['Total Budget'], errors='coerce')
内容的提问来源于stack exchange,提问作者ips2k4
相关产品推荐
相关产品推荐

