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

pandas中asfreq()未指定method时丢失数据的原因咨询

问题原因

asfreq('T')的核心逻辑是生成严格对齐指定频率(分钟级)的时间索引,然后仅保留原数据中索引恰好落在这些整点分钟上的行。但你的原始数据时间戳都带秒数(比如2020-03-02 19:13:22),和asfreq('T')生成的整点分钟(如2020-03-02 19:13:00)完全不匹配,所以原数据的所有行都无法匹配到新索引,最终全部显示为NaN,看起来就像“原数据消失”了。

解决方法

要保留原数据的有效数值、同时在分钟级间隔填充NaN,推荐用以下步骤:

  1. 转换时间格式并设置为索引:
Sal['DateTime'] = pd.to_datetime(Sal['DateTime'])
Sal = Sal.set_index('DateTime')
  1. 生成覆盖原数据时间范围的分钟级时间序列:
min_range = pd.date_range(start=Sal.index.min(), end=Sal.index.max(), freq='T')
  1. 重新索引对齐,保留原数据值,空值自动填充NaN:
Sal = Sal.reindex(min_range)

这样处理后,原数据中19:13:22对应的28会保留在原时间戳的行里,前后的分钟间隔则填充NaN,完全满足后续插值的需求。

如果需要将原数据的时间戳对齐到最近的分钟(比如舍弃秒数,合并到19:13:00),可以先对索引做取整处理,再使用asfreq:

Sal['DateTime'] = pd.to_datetime(Sal['DateTime'])
# 将时间戳向下取整到分钟
Sal['DateTime'] = Sal['DateTime'].dt.floor('T')
Sal = Sal.set_index('DateTime').asfreq('T')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:33:24