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

Pandas如何将含区域年度目标的DataFrame拆分为月度目标

方案1:index.repeat实现(兼容性最优,全pandas版本可用)

不需要创建辅助月度表,也不需要做笛卡尔积合并,代码如下:

import pandas as pd

df = pd.DataFrame.from_records(data=[['region1',60000],['region2',120000]], columns=['region','goal'])

# 每行重复12次对应12个月
df = df.loc[df.index.repeat(12)].reset_index(drop=True)
# 生成月度序列
df['month'] = df.index % 12 + 1
# 计算月度目标
df['goal'] = (df['goal'] / 12).astype(int)

方案2:explode实现(代码最精简,要求pandas≥0.25.0)

利用列表列炸开的特性直接生成月度字段,代码如下:

import pandas as pd

df = pd.DataFrame.from_records(data=[['region1',60000],['region2',120000]], columns=['region','goal'])

# 先给每行赋值完整的12个月份列表
df['month'] = [list(range(1, 13))] * len(df)
# 炸开列表列得到每月数据
df = df.explode('month', ignore_index=True)
# 计算月度目标
df['goal'] = (df['goal'] / 12).astype(int)

两种方案最终输出结果和你当前实现的结果完全一致,对比cross merge的写法更精简,也避免了额外的合并操作,数据量较大时性能更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:06