基于旧DataFrame生成12个月滞后数据新DataFrame,缺失值用均值填充的实现方法
实现代码
首先确保你已导入pandas库,且df_train的索引已转换为datetime类型,完整代码如下:
import pandas as pd # 转换df_train索引为datetime格式(若已为datetime可跳过该行),适配你输入的日-月-年日期格式 df_train.index = pd.to_datetime(df_train.index, format='%d-%m-%Y') # 构造历史月份与X1值的映射字典,key为1-12的月份数字 month_value_map = df_train.set_index(df_train.index.month)['X1'].to_dict() # 计算X1列均值,即你提到的ts_train均值 x1_avg = df_train['X1'].mean() # 生成目标日期索引,调整参数适配你示例中从9月开始的需求 future_dates = pd.date_range( start=df_train.index.max() + pd.DateOffset(months=1), periods=12, freq='MS' # 按你示例输出每月1号的要求配置,如需月末日期改为'M'即可 ) # 构造新DataFrame并按规则填充X1字段 df_result = pd.DataFrame(index=future_dates) df_result['X1'] = df_result.index.month.map(lambda m: month_value_map.get(m, x1_avg))
结果说明
运行后得到的df_result完全符合预期:2020年9-12月无对应历史月份数据,自动填充均值4.5(即36/8),2021年1-8月匹配到历史1-8月的对应数值1-8。
内容的提问来源于stack exchange,提问作者user2512443
相关产品推荐
相关产品推荐

