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


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


用法:

DataFrame.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise', nonexistent='raise')

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

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

参数

tzstr 或 tzinfo
axis要定位的轴
levelint, str, 默认无

如果轴 ia 是 MultiIndex,则本地化特定级别。否则必须为无。

copy布尔值,默认为真

同时制作基础数据的副本。

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

当时钟由于 DST 向后移动时,可能会出现不明确的时间。例如,在欧洲中部时间 (UTC+01) 中,当从 03:00 DST 到 02:00 非 DST 时,当地时间 02:30:00 发生在 00:30:00 UTC 和 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。

返回

Series或DataFrame

与输入相同的类型。

抛出

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 可以推断 DST 时间:

>>> 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

在某些情况下,推断 DST 是不可能的。在这种情况下,您可以将 ndarray 传递给 ambiguous 参数以显式设置 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_backward’ 将这些日期向前或向后移动。

>>> s = pd.Series(range(2),
...               index=pd.DatetimeIndex(['2015-03-29 02:30:00',
...                                       '2015-03-29 03:30:00']))
>>> s.tz_localize('Europe/Warsaw', nonexistent='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('Europe/Warsaw', nonexistent='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('Europe/Warsaw', nonexistent=pd.Timedelta('1H'))
2015-03-29 03:30:00+02:00    0
2015-03-29 03:30:00+02:00    1
dtype:int64

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.tz_localize。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。