如何在Python DataFrame中按固定增量计算并插入后续12个月预估数据
Python生成后续12个月预估数据方案
我们可以用pandas库快速实现数据计算和拼接,操作如下:
前置准备
如果还没安装依赖库,执行以下命令安装:
pip install pandas python-dateutil
操作代码
import pandas as pd from dateutil.relativedelta import relativedelta from datetime import datetime # 1. 构造现有数据,也可以用pd.read_csv("你的文件路径.csv")读取本地存储的现有数据 raw_data = [ ["Dec-20", 530, 7287, 803, 6024], ["Jan-21", 824, 7447, 1111, 6384], ["Feb-21", 1104, 7665, 1559, 6669], ["Mar-21", 1379, 8270, 2031, 6932], ["Apr-21", 1654, 8799, 2534, 7013], ["May-21", 1901, 9295, 3061, 7013], ["Jun-21", 2276, 9776, 3596, 7077], ["Jul-21", 2914, 13324, 3808, 7061], ["Aug-21", 3329, 10266, 4054, 7125], ["Sep-21", 3829, 10497, 4255, 7322], ["Oct-21", 4304, 10614, 4353, 7467] ] df = pd.DataFrame(raw_data, columns=["Month", "No.1", "No.2", "No.3", "No.4"]) # 2. 处理月份格式,生成后续12个月的月份序列 df["Month_dt"] = pd.to_datetime(df["Month"], format="%b-%y") last_month = df["Month_dt"].max() predict_months = [last_month + relativedelta(months=i+1) for i in range(12)] # 3. 按规则计算预估数值 last_vals = df.iloc[-1] # 取最后一行现有数据作为基数 predict_data = [] for idx, month in enumerate(predict_months): new_row = [ month.strftime("%b-%y"), last_vals["No.1"] + 380 * (idx + 1), last_vals["No.2"] + 160 * (idx + 1), last_vals["No.3"] + 160 * (idx + 1), last_vals["No.4"] + 360 * (idx + 1) ] predict_data.append(new_row) # 4. 合并原有数据和预估数据 predict_df = pd.DataFrame(predict_data, columns=df.columns[:-1]) final_df = pd.concat([df[["Month", "No.1", "No.2", "No.3", "No.4"]], predict_df], ignore_index=True) # 5. 输出结果,可根据需要导出为csv print(final_df.to_string(index=False)) # 如果需要保存为本地文件,取消注释下一行 # final_df.to_csv("完整数据.csv", index=False, encoding="utf-8-sig")
结果说明
运行代码后会输出拼接好的全部23个月数据,前11行是你提供的原始数据,后12行是按规则生成的预估数据,和你给出的预期示例完全匹配:
- No.1列每月比上月增长380
- No.2、No.3列每月比上月增长160
- No.4列每月比上月增长360
- 月份会自动按
月缩写-年份格式顺延生成
内容的提问来源于stack exchange,提问作者Eli Smith
相关产品推荐
相关产品推荐

