当前位置: 首页>>代码示例>>用法及示例精选>>正文


python pandas DataFrame.tz_localize用法及代码示例

用法:

DataFrame.tz_localize(self:~FrameOrSeries, tz, axis=0, level=None, copy:bool = True, ambiguous='raise', nonexistent:str = 'raise') → ~FrameOrSeries

将Series或DataFrame的tz-naive索引本地化为目标时区。

此操作将索引本地化。要本地化timezone-naive Series 中的值,请使用Series.dt.tz_localize()

参数:

tzstr 或 tzinfo
axisthe axis to localize
levelint, str, 默认为 None

如果轴为MultiIndex,则定位特定级别。否则必须为None。

copybool, 默认为 True

还制作基础数据的副本。

ambiguous‘infer’, bool-ndarray, ‘NaT’, 默认为 ‘raise’

当时钟由于DST而向后移动时,可能会产生不明确的时间。例如,在中欧时间(UTC + 01)中,当夏令时从03:00变为非夏令时02:00时,本地时间02:30:00发生在世界标准时间00:30:00和01:30:00世界标准时间。在这种情况下,ambiguous参数指示应如何处理不明确的时间。

  • ‘infer’将尝试根据订单推断dst-transition小时的下降时间

  • bool-ndarray,其中True表示DST时间,False表示非DST时间(请注意,此标志仅适用于不明确的时间)

  • ‘NaT’将在存在歧义的时间返回NaT

  • 如果存在不明确的时间,‘raise’将引发AmbiguousTimeError。

nonexistentstr, 默认为 ‘raise’

在特定时区中不存在不存在的时间,在该特定时区中,时钟由于DST而向前移动。有效值为:

  • ‘shift_forward’会将不存在的时间向前移动到最接近的现有时间

  • ‘shift_backward’将不存在的时间向后移至最接近的现有时间

  • ‘NaT’将在没有时间的地方返回NaT

  • timedelta对象会将不存在的时间偏移timedelta

  • 如果不存在时间,则‘raise’将引发NonExistentTimeError。

0.24.0版中的新功能。

返回值:

Series

与输入相同的类型。

异常:

TypeError

如果TimeSeries为tz-aware并且tz不为None。

例子:

本地化本地时间:

>>> s = pd.Series([1],
...               index=pd.DatetimeIndex(['2018-09-15 01:30:00']))
>>> s.tz_localize('CET')
2018-09-15 01:30:00+02:00    1
dtype:int64

请注意DST更改。有顺序数据时, pandas 可以推断出夏令时时间:

>>> s = pd.Series(range(7),
...               index=pd.DatetimeIndex(['2018-10-28 01:30:00',
...                                       '2018-10-28 02:00:00',
...                                       '2018-10-28 02:30:00',
...                                       '2018-10-28 02:00:00',
...                                       '2018-10-28 02:30:00',
...                                       '2018-10-28 03:00:00',
...                                       '2018-10-28 03:30:00']))
>>> s.tz_localize('CET', ambiguous='infer')
2018-10-28 01:30:00+02:00    0
2018-10-28 02:00:00+02:00    1
2018-10-28 02:30:00+02:00    2
2018-10-28 02:00:00+01:00    3
2018-10-28 02:30:00+01:00    4
2018-10-28 03:00:00+01:00    5
2018-10-28 03:30:00+01:00    6
dtype:int64

在某些情况下,无法推断出夏令时。在这种情况下,您可以将ndarray传递给歧义参数以显式设置DST

>>> s = pd.Series(range(3),
...               index=pd.DatetimeIndex(['2018-10-28 01:20:00',
...                                       '2018-10-28 02:36:00',
...                                       '2018-10-28 03:46:00']))
>>> s.tz_localize('CET', ambiguous=np.array([True, True, False]))
2018-10-28 01:20:00+02:00    0
2018-10-28 02:36:00+02:00    1
2018-10-28 03:46:00+01:00    2
dtype:int64

如果DST过渡导致不存在时间,则可以使用timedelta对象或将这些日期向前或向后移动‘shift_forward’或者‘shift_backwards’。 >>> s = pd.Series(range(2),…index = pd.DatetimeIndex(['2015-03-29 02:30:00',…'2015-03-29 03:30:00']) )>>> s.tz_localize('欧洲/华沙',不存在='shift_forward')2015-03-29 03:00:00 + 02:00 0 2015-03-29 03:30:00 + 02:00 1 dtype:int64 >>> s.tz_localize('欧洲/华沙',不存在='shift_backward')2015-03-29 01:59:59.999999999 + 01:00 0 2015-03-29 03:30:00 + 02: 00 1 dtype:int64 >>> s.tz_localize('欧洲/华沙',不存在= pd.Timedelta(‘1H’))2015-03-29 03:30:00 + 02:00 0 2015-03-29 03:30 :00 + 02:00 1 dtype:int64

源码:

pandas.DataFrame.tz_localize的API实现见:[源代码]

注:本文由纯净天空筛选整理自 pandas.DataFrame.tz_localize。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。