gpt4 book ai didi

Pandas:tz_convert 使用 apply 返回对象而不是 datetime

转载 作者:行者123 更新时间:2023-12-05 02:16:14 25 4
gpt4 key购买 nike

我有一个由 UTC 时间戳索引的数据框,以及指定时区和夏令时与 UTC 的分钟偏移量的 2 列:

                           time_zone  daylight_saving
END_DATE
2017-06-02 00:00:00+00:00 0 60
2017-06-02 01:00:00+00:00 0 60
2017-06-02 02:00:00+00:00 0 60
2017-06-02 03:00:00+00:00 0 60
2017-06-02 04:00:00+00:00 0 60

我正在尝试使用 pytz.FixedOffset 将时间戳转换为本地时区。使用静态偏移量效果很好,我得到了具有适当时区的日期时间:

In [51]: df.tz_convert(pytz.FixedOffset(120))[['time_zone','daylight_saving']].head()
Out[51]:
time_zone daylight_saving
END_DATE
2017-06-02 02:00:00+02:00 0 60
2017-06-02 03:00:00+02:00 0 60
2017-06-02 04:00:00+02:00 0 60
2017-06-02 05:00:00+02:00 0 60
2017-06-02 06:00:00+02:00 0 60

In [52]: df.tz_convert(pytz.FixedOffset(120))[['time_zone','daylight_saving']].head().index
Out[52]:
DatetimeIndex(['2017-06-02 02:00:00+02:00', '2017-06-02 03:00:00+02:00',
'2017-06-02 04:00:00+02:00', '2017-06-02 05:00:00+02:00',
'2017-06-02 06:00:00+02:00'],
dtype='datetime64[ns, pytz.FixedOffset(120)]', name='END_DATE', freq=None)

但是,为了使用偏移列执行此操作,我需要使用 apply 方法:

In [63]: r_df.apply(lambda r: 
r['END_DATE'].tz_convert(pytz.FixedOffset(r['time_zone'] +
r['daylight_saving'])), axis=1).head()
Out[63]:
0 2017-06-02 01:00:00+01:00
1 2017-06-02 02:00:00+01:00
2 2017-06-02 03:00:00+01:00
3 2017-06-02 04:00:00+01:00
4 2017-06-02 05:00:00+01:00
dtype: object

如您在输出中所见,这将返回一个对象系列,而不是我预期的日期时间系列。

如果我尝试使用 pd.to_datetime 将其转换回来,我将被迫将其返回到 UTC,这违背了应用时区的目的。

有没有办法在保留 tz 信息的同时将其转换回 dt?

最佳答案

我偶然发现了同样的问题并将其报告给 Pandas 社区,社区将我重定向到引用相同问题的旧问题。遗憾的是,问题仍然没有解决方案,但如果您想跟踪问题,可以查看:

  1. The issue I reported.
  2. The issue I was redirected to.

关于Pandas:tz_convert 使用 apply 返回对象而不是 datetime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com