将 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中文网其他相关文章!