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

如何扩展numpy、pandas、xarray格式的时间序列,将缺失记录填充为NaN值

我之前处理时间序列数据的时候经常碰到这种缺失时间点但没标记NaN的情况,其实xarray和pandas都有现成的高效方法解决,不用手动去定位缺失位置,给你分两种场景详细说明:

处理xarray Dataset(ds)的情况

xarray里的reindex方法简直是为这种场景量身定做的——我们只需要先构建出完整的目标时间序列,再用它对原数据集重新索引,缺失的时间点就会自动填充NaN。

基于你的示例代码,具体操作如下:

# 先构建完整的小时级时间序列,和原数据的起始、频率、总周期一致
full_time = pd.date_range("2000-01-01", freq="H", periods=365 * 5)
# 对原Dataset重新索引,缺失位置自动填充NaN
ds_full = ds.reindex(time=full_time)

执行完之后,ds_full的time维度就会恢复到365×5的完整长度,之前缺失的30个时间点对应的foo值都会变成NaN,完全符合你的需求。

处理pandas DataFrame(df)的情况

如果是处理pandas的DataFrame,用asfreq方法会更便捷,不过要确保你的DataFrame的索引是时间类型索引(你的示例里ds.to_dataframe()之后,time列已经自动变成了索引,刚好满足条件)。

具体代码:

# 按小时频率填充缺失时间点,缺失值自动设为NaN
df_full = df.asfreq('H')

要是你的DataFrame里time还不是索引,先执行这一步转换就行:

df = df.set_index('time')
df_full = df.asfreq('H')

这样处理后,df_full的行数就会恢复到365×5,缺失的时间点对应的数值列都会被填充为NaN。

这两种方法都不需要手动去统计或定位缺失的位置,工具会自动帮我们完成所有脏活,效率超高~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:52:35