【问题标题】:Subtracting two pandas timezone aware timestamps gives TypeError减去两个 Pandas 时区感知时间戳会得到 TypeError
【发布时间】:2020-03-24 01:26:58
【问题描述】:

我有两个时区感知 pandas 日期时间时间戳。当我减去它们时,我得到了错误:

TypeError: Timestamp subtraction must have the same timezones or no timezones

第一个是从转换到pandas datetime:

start_time = pd.to_datetime(dt.datetime(2019, 6, 28, 0, 52, 57, tzinfo=dt.timezone.utc))

第二个来自 DataFrame 索引,如下所示:

>> phase_df.index[0]
Timestamp('2019-06-28 00:52:30.000130+0000', tz='UTC')

确认它们是同一类型:

>> type(phase_df.index[0]), type(start_time)
(pandas._libs.tslibs.timestamps.Timestamp,
 pandas._libs.tslibs.timestamps.Timestamp)

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    似乎我能找到的唯一解决方案是在减法之前删除所有时区信息。

    start_time = pd.to_datetime(dt.datetime(2019, 6, 28, 0, 52, 57, tzinfo=dt.timezone.utc)).tz_localize(None)
    
    other_time = phase_df.index.tz_localize(None)
    
    start_time - other_time
    

    没有错误。但它真的应该能够与时区一起工作。一定是个bug。

    【讨论】:

    • 我今天遇到了同样的问题并找到了这篇文章。我同意,听起来像一个错误。我还要说一个附加功能是时区感知时间戳的日期时间减法也应该起作用。在内部,将它们转换为 utc,然后减去。
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2015-12-22
    • 2018-12-05
    • 2011-04-02
    • 1970-01-01
    • 2019-01-02
    • 2017-06-07
    相关资源
    最近更新 更多