當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。