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

如何对DataFrame重采样?转换DateTimeIndex遇格式错误求解

解决DateTime解析错误与3小时重采样问题

刚看到你的问题,咱们一步步来搞定:先解决pd.to_datetime报的Unknown string format错误,再实现3小时间隔的重采样,方便后续构建滞后特征。

第一步:修复日期解析失败的问题

你遇到的解析错误,是因为pandas默认的日期解析器对YYYY/MM/DD HH:MM这种格式的识别偶尔会"卡壳",咱们显式指定时间格式就能完美解决,而且建议先转换列类型再设置索引,比先设索引再转换更稳妥:

# 先把Time Instant列转换成datetime类型,明确告诉pandas时间字符串的格式
Mi_Meteo['Time Instant'] = pd.to_datetime(Mi_Meteo['Time Instant'], format='%Y/%m/%d %H:%M')
# 再将该列设置为索引
Mi_Meteo = Mi_Meteo.set_index('Time Instant')

这里的format='%Y/%m/%d %H:%M'对应你的时间格式:%Y是4位年份,%m是2位月份,%d是2位日期,%H是24小时制的小时,%M是分钟,给pandas明确的规则后就不会再报错啦。

第二步:实现3小时间隔的重采样

接下来做3小时重采样,这里要注意两个关键点:如果你的数据有多个传感器ID,必须先分组再重采样(避免不同传感器的数据混在一起);另外要根据需求选择聚合规则(比如取窗口内第一个值、均值等)。

情况1:数据包含多个Sensor ID

这种情况下一定要先按传感器分组,再进行重采样:

# 按Sensor ID分组,每3小时重采样,这里用first()取窗口内第一个数据点,你可以换成mean()/last()等
resampled_df = Mi_Meteo.groupby('Sensor ID').resample('3H').first().reset_index()

情况2:数据只有单个Sensor ID

如果你的数据里只有一个传感器,直接重采样就行:

resampled_df = Mi_Meteo.resample('3H').first().reset_index()

调整重采样的起始时间

如果希望重采样的时间点从当天00:00开始(就像你示例里的00:00、03:00这种对齐方式),可以加上origin='start_day'参数:

# 按当天00:00为起点对齐重采样窗口
resampled_df = Mi_Meteo.groupby('Sensor ID').resample('3H', origin='start_day').first().reset_index()

可选的聚合函数

你可以根据业务需求替换first():

  • last():取每个3小时窗口的最后一个数据点
  • mean():计算窗口内的平均值
  • sum():计算窗口内的总和
  • max()/min():取窗口内的最大/最小值

最终效果

执行完上述代码后,你会得到和示例结构一致的DataFrame,时间索引会是标准的datetime格式,完全满足后续构建滞后特征的需求~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:35:24