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

pandas中使用Timestamp.floor/ceil处理带时区时间戳时遭遇NonExistentTimeError的问题求助

pandas中使用Timestamp.floor/ceil处理带时区时间戳时遭遇NonExistentTimeError的问题求助

我最近在处理带时区的时间戳时碰到了个棘手的问题:尝试对美洲/圣地亚哥时区的时间戳按天做floor取整时,因为夏令时切换触发了NonExistentTimeError异常,具体情况如下:

>>> pd.Timestamp('2024-09-08 12:00:00-0300', tz='America/Santiago').floor("D")
NonExistentTimeError: 2024-09-08 00:00:00

我清楚那天的午夜时间是不存在的——夏令时启动后,时钟从9月7日的23:59直接跳到了9月8日的01:00。但我原本预期floor方法会返回当天实际存在的最早时间,也就是pd.Timestamp('2024-09-08 01:00:00-0300', tz='America/Santiago')。

更糟的是,对前一天的时间戳做ceil按天取整时,也会遇到一模一样的异常:

>>> pd.Timestamp('2024-09-07 12:00:00-0300', tz='America/Santiago').ceil("D")
NonExistentTimeError: 2024-09-08 00:00:00

我自己试了两种解决思路,但都没得到预期结果:

  • 先取floor再本地化时区,还是会抛出相同异常:
>>> pd.Timestamp('2024-09-08 12:00:00').floor("D").tz_localize('America/Santiago')
NonExistentTimeError: 2024-09-08 00:00:00
  • 先取floor再转换时区,得到的结果完全不对:
>>> pd.Timestamp('2024-09-08 12:00:00-0300').floor("D").tz_convert('America/Santiago')
Timestamp('2024-09-07 23:00:00-0400', tz='America/Santiago')  # Wrong answer

有没有大佬能帮忙解决这个问题,让我能正确拿到按天取整后的有效时区时间戳呢?

备注:内容来源于stack exchange,提问作者edd313

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:53:13