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

Python中为DataFrame补全起始缺失时间戳并插值的方法

补全DataFrame起始缺失时间戳并完成插值降采样

问题背景

从服务器获取的高采样率(2-3秒间隔)DataFrame,起始时间晚于需求的时间范围(比如需求00:00:00至23:59:59,但第一个数据点是00:11:52),需要补全起始段的分钟级时间戳,用NaN填充对应数据列,之后插值处理所有缺失值,最终降采样至1分钟间隔。

解决方案步骤

  1. 生成缺失时间范围的DataFrame:创建包含需求起始到第一个数据点前所有分钟级时间戳的DataFrame,并自动添加与原数据一致的数值列,初始值设为NaN。
  2. 拼接数据:将缺失数据的DataFrame与原数据拼接,得到完整时间范围的数据集。
  3. 插值与降采样:设置时间列为索引,线性插值填充所有NaN,再按1分钟间隔重采样。

完整可运行代码

import numpy as np
import pandas as pd
import pyspedas
from pytplot import get_data

# 定义目标时间范围
AtimeRange = ["2012-01-22/00:00:00","2012-01-23/23:59:59"]

# 从服务器导入数据
artemis_fgm_import = pyspedas.themis.fgm(trange=AtimeRange, probe='b', time_clip=True, varnames='thb_fgs_gsm')

# 构建原始DataFrame
df_fgm = pd.DataFrame({'Time': get_data('thb_fgs_gsm')[0], 
                       'BX_GSM': get_data('thb_fgs_gsm')[1][:, 0],
                       'BY_GSM': get_data('thb_fgs_gsm')[1][:, 1], 
                       'BZ_GSM': get_data('thb_fgs_gsm')[1][:, 2]},
                      columns=['Time', 'BX_GSM', 'BY_GSM', 'BZ_GSM'])
df_fgm['Time'] = pd.to_datetime(df_fgm['Time'], unit='s')

# 生成缺失的分钟级时间序列(取第一个数据点所在分钟的前一分钟作为结束)
missing_time_range = pd.date_range(start=AtimeRange[0], 
                                   end=df_fgm['Time'][0].floor('min'), 
                                   freq='min')

# 创建缺失数据的DataFrame,自动填充数值列为NaN
missing_df = pd.DataFrame({'Time': missing_time_range})
for col in ['BX_GSM', 'BY_GSM', 'BZ_GSM']:
    missing_df[col] = np.nan

# 拼接缺失数据与原始数据
combined_df = pd.concat([missing_df, df_fgm], ignore_index=True)

# 设置时间列为索引,便于时间序列操作
combined_df = combined_df.set_index('Time')

# 线性插值填充所有缺失值(包括原始数据中的分散NaN)
interpolated_df = combined_df.interpolate(method='linear')

# 降采样至1分钟间隔,这里采用均值统计,可根据需求替换为max/min等
resampled_df = interpolated_df.resample('min').mean().reset_index()

# 输出前15行查看结果
print(resampled_df.head(15))

关键细节说明

  • 生成缺失时间范围时,使用floor('min')确保结束时间是第一个数据点所在分钟的前一分钟,避免重复时间戳。
  • 循环添加数值列并设为NaN,保证拼接后的DataFrame列结构完全一致。
  • 先插值再重采样,确保降采样的分钟级数据是基于完整插值后的高采样数据计算而来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:17:49