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

如何在Pandas DataFrame中按15分钟时间粒度复制数值?

实现Pandas DataFrame数值按15分钟间隔复制的解决方案

你的需求是将原DataFrame中每个value值对应到4个15分钟间隔的时间戳(如00:00、00:15、00:30、00:45共用同一个数值),原代码使用interpolate()会做线性插值而非直接复制原值,因此无法达到效果。以下两种方法可以实现需求:

方法一:使用resample + 前向填充(ffill)

这种方法适合原始时间戳按小时(或更长间隔)排列的场景,通过重采样生成15分钟间隔序列,再将原始值向前填充3次(覆盖自身+后续3个15分钟点):

import pandas as pd

# 处理时间戳格式
df['timestamp'] = pd.to_datetime(df['timestamp'], format='%d.%m.%Y %H:%M')
# 设置时间索引,重采样为15分钟间隔,前向填充3次
df_result = df.set_index('timestamp').resample('15T').ffill(limit=3).reset_index()

方法二:手动重复行并生成时间偏移

如果需要更灵活控制时间序列,可以先将每行数据重复4次,再为每行添加对应的分钟偏移:

import pandas as pd

# 处理时间戳格式
df['timestamp'] = pd.to_datetime(df['timestamp'], format='%d.%m.%Y %H:%M')
# 重复每行4次
df_repeated = df.loc[df.index.repeat(4)].reset_index(drop=True)
# 为每组重复行添加0、15、30、45分钟的偏移
df_repeated['timestamp'] = df_repeated['timestamp'] + pd.to_timedelta(df_repeated.groupby(df_repeated.index // 4).cumcount() * 15, unit='m')

原代码问题说明

你之前使用asfreq('15T')会生成15分钟间隔的时间序列,但中间缺失的value会被设为NaN,而interpolate()默认是线性插值,会计算相邻数值的中间值,并非直接复制原始值,因此不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:33:31