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

如何利用时间序列历史行给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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:00:56