如何利用时间序列历史行给Pandas DataFrame添加新行
解决方案
1. 数据预处理
先把date列转为datetime类型,确保日期操作能正常执行:
import pandas as pd # 构造原始DataFrame data = { 'date': ['2022-12-07', '2022-12-08', '2022-12-09', '2022-12-10', '2022-12-11', '2022-12-12', '2022-12-13', '2022-12-14'], 't': [4729, 5382, 1969, 26, 13, 5055, 6128, 3599], 't-7': [4537, 5348, 1902, 20, 14, 4866, 5927, 4729], 't-14': [4758, 5494, 1965, 20, 10, 4733, 6166, 4515] } df = pd.DataFrame(data) df['date'] = pd.to_datetime(df['date'])
2. 生成完整日期序列
假设你需要扩展到2022-12-21,生成该范围内的所有日期,并合并原始数据:
# 设置目标结束日期 target_end_date = '2022-12-21' # 生成从原始起始日到目标日的完整日期序列 date_range = pd.date_range(start=df['date'].min(), end=target_end_date, freq='D') # 创建包含完整日期的空DataFrame full_df = pd.DataFrame({'date': date_range}) # 合并原始数据中的t值,缺失的t值可后续按业务规则补充 full_df = full_df.merge(df[['date', 't']], on='date', how='left')
3. 计算t-7和t-14列
用shift()方法将t列分别下移7行、14行,填充对应列:
full_df['t-7'] = full_df['t'].shift(7) full_df['t-14'] = full_df['t'].shift(14)
注意事项
- 如果新增行的
t值需要生成(比如预测值),得先填充t列的缺失值,再执行shift操作 - 若目标日期早于原始数据的最大日期,调整
date_range的起止参数即可
内容的提问来源于stack exchange,提问作者Cecile
相关产品推荐
相关产品推荐

