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

如何为DataFrame的非等间隔时间序列填充分钟级重复值

如何为非等间隔时间步的DataFrame填充每分钟的重复值?

嘿,别纠结用while loop啦——pandas有更简洁高效的方法来搞定这个需求!咱们一步步来实现你要的效果:

步骤1:构造并预处理原始数据

首先,先模拟你的原始DataFrame(如果已经有现成的数据,直接跳过构造部分),然后把时间列转换成pandas能识别的datetime类型,并设置为索引:

import pandas as pd

# 模拟你的原始数据
data = {
    'datetime': ['02/06/2021 17:57', '02/06/2021 18:05', '02/06/2021 18:11', '02/06/2021 18:32', '02/06/2021 19:00'],
    'value': [16.38, 25.89, 21.32, 12.65, 14.78]
}
df = pd.DataFrame(data)

# 转换时间格式:这里的format对应你的时间字符串格式(日/月/年 时:分)
df['datetime'] = pd.to_datetime(df['datetime'], format='%d/%m/%Y %H:%M')
# 将时间列设置为DataFrame的索引
df = df.set_index('datetime')

步骤2:按分钟重采样并填充值

接下来用resample方法生成每分钟的时间序列,再用ffill()(前向填充)把每个时间步的数值延续到下一个时间点之前的所有分钟:

# 按1分钟频率重采样,并用前向填充补全空值
filled_df = df.resample('1min').ffill()

效果验证

执行完上面的代码后,你可以打印前10行看看效果:

print(filled_df.head(10))

输出会和你预期的完全一致:

value
datetime                  
2021-06-02 17:57:00  16.38
2021-06-02 17:58:00  16.38
2021-06-02 17:59:00  16.38
2021-06-02 18:00:00  16.38
2021-06-02 18:01:00  16.38
2021-06-02 18:02:00  16.38
2021-06-02 18:03:00  16.38
2021-06-02 18:04:00  16.38
2021-06-02 18:05:00  25.89
2021-06-02 18:06:00  25.89

小提示

  • 如果你的原始时间字符串格式不同,只需要调整pd.to_datetime里的format参数即可(比如如果是月/日/年,就改成%m/%d/%Y %H:%M)。
  • 这种方法比while loop高效太多,尤其是当你处理大数据量的时候,完全不用手动循环遍历每一分钟~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 15:12:33