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

Pandas中如何生成带滚动时间戳的逐行递增数值数据

Pandas同步生成滚动时间戳+递增值数据实现方案

不需要拆分生成数值序列、时间戳序列再做拼接,直接使用Pandas原生向量化运算即可高效实现,代码简洁且性能更优。

核心实现代码

import pandas as pd
import numpy as np
from pandas import Timestamp

# 初始基准数据
data = {
    'apple': {Timestamp('2020-01-01 00:00:00'): 10},
    'orange': {Timestamp('2020-01-01 00:00:00'): 20},
    'lemon': {Timestamp('2020-01-01 00:00:00'): 30}
}
df = pd.DataFrame.from_dict(data)

# 自定义配置参数
gen_row_num = 3  # 要生成的总行数
time_step = pd.DateOffset(years=1)  # 时间滚动步长,可替换为days=1、hours=2等任意时间偏移
value_increment = 10  # 每行数值的递增值,传等长列表可实现不同列不同递增幅度

# 生成新的时间索引
new_time_index = pd.date_range(
    start=df.index[0] + time_step,
    periods=gen_row_num,
    freq=time_step
)

# 广播计算所有递增值,无需逐行循环
new_data = df.iloc[0].to_numpy() + value_increment * np.arange(gen_row_num).reshape(-1, 1)

# 组装最终结果
result = pd.DataFrame(
    new_data.astype(int),
    index=new_time_index,
    columns=df.columns
)
result.index.name = 'date'

运行输出

执行代码后得到的结果和预期完全一致:

apple  orange  lemon
date                            
2021-01-01     10      20     30
2022-01-01     20      30     40
2023-01-01     30      40     50

方案优势

  • 全向量化运算,无Python层显式循环,数据量较大时性能远高于逐行构造、多表拼接的实现
  • 参数灵活可配:支持任意时间滚动粒度、任意递增步长,可快速适配不同生成规则
  • 无多余中间步骤,不需要单独维护数值、时间戳两个独立DataFrame再做关联,逻辑链路更短,不易出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:39:57