首页  >  文章  >  后端开发  >  如何将 Pandas 时区感知的 DateTimeIndex 转换为特定时区的朴素时间戳?

如何将 Pandas 时区感知的 DateTimeIndex 转换为特定时区的朴素时间戳?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 12:18:30889浏览

How to Convert a Pandas Timezone-Aware DateTimeIndex to a Naive Timestamp in a Specific Timezone?

将 Pandas 时区感知的 DateTimeIndex 转换为指定时区的朴素时间戳

Pandas 提供 tz_localize 函数来创建时区感知的时间戳或 DateTimeIndex 。但如果您想撤消此操作怎么办?如何将时区感知的时间戳转换为天真的时间戳而不改变其时区?

问题:

让我们考虑一个时区感知的 DateTimeIndex:

<code class="python">t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")</code>

将时区设置为 None 会删除时区,但会将时间戳转换为 UTC,从而更改可见时间。

解决方案(Pandas 0.15.0 ):

从 Pandas 0.15.0 开始,可以使用 tz_localize 方法将时区设置为 None。这将删除时区信息,同时保留本地时间:

<code class="python">t.tz_localize(None)</code>

这会产生一个简单的本地时间 DateTimeIndex。

或者,tz_convert(None) 可用于转换为简单的 UTC 时间:

<code class="python">t.tz_convert(None)</code>

性能注意事项:

tz_localize(None) 方法比使用循环替换时区信息要高效得多:

<code class="python">%timeit t.tz_localize(None)
1000 loops, best of 3: 233 µs per loop

%timeit pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
10 loops, best of 3: 99.7 ms per loop</code>

以上是如何将 Pandas 时区感知的 DateTimeIndex 转换为特定时区的朴素时间戳?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn