用法:
DatetimeIndex.tz_localize(tz, ambiguous='raise', nonexistent='raise')
將 tz-naive 日期時間數組/索引本地化為 tz-aware 日期時間數組/索引。
此方法采用時區 (tz) 天真 Datetime Array/Index 對象,並使該時區感知。它不會將時間移動到另一個時區。
這個方法也可以用來做相反的事情——從一個感知對象創建一個時區不感知對象。為此,請傳遞
tz=None
。- tz:str、pytz.timezone、dateutil.tz.tzfile 或無
將時間戳轉換為的時區。傳遞
None
將刪除保留本地時間的時區信息。- ambiguous:‘infer’, ‘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。
- nonexistent:‘shift_forward’, ‘shift_backward, ‘NaT’, timedelta, 默認 ‘raise’
由於 DST,時鍾向前移動的特定時區不存在不存在的時間。
‘shift_forward’ 將不存在的時間向前移動到最接近的存在時間
‘shift_backward’ 將不存在的時間向後移動到最接近的存在時間
‘NaT’ 將返回不存在時間的 NaT
timedelta 對象會將不存在的時間移動 timedelta
如果時間不存在,‘raise’ 將引發 NonExistentTimeError。
- 與自己相同的類型
數組/索引轉換為指定時區。
- TypeError
如果日期時間數組/索引是 tz-aware 並且 tz 不是無。
參數:
返回:
拋出:
例子:
>>> tz_naive = pd.date_range('2018-03-01 09:00', periods=3) >>> tz_naive DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00', '2018-03-03 09:00:00'], dtype='datetime64[ns]', freq='D')
在美國/東部時區本地化 DatetimeIndex:
>>> tz_aware = tz_naive.tz_localize(tz='US/Eastern') >>> tz_aware DatetimeIndex(['2018-03-01 09:00:00-05:00', '2018-03-02 09:00:00-05:00', '2018-03-03 09:00:00-05:00'], dtype='datetime64[ns, US/Eastern]', freq=None)
使用
tz=None
,我們可以在保留本地時間(未轉換為 UTC)的同時刪除時區信息:>>> tz_aware.tz_localize(None) DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00', '2018-03-03 09:00:00'], dtype='datetime64[ns]', freq=None)
小心 DST 更改。當有順序數據時,pandas 可以推斷 DST 時間:
>>> s = pd.to_datetime(pd.Series(['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.dt.tz_localize('CET', ambiguous='infer') 0 2018-10-28 01:30:00+02:00 1 2018-10-28 02:00:00+02:00 2 2018-10-28 02:30:00+02:00 3 2018-10-28 02:00:00+01:00 4 2018-10-28 02:30:00+01:00 5 2018-10-28 03:00:00+01:00 6 2018-10-28 03:30:00+01:00 dtype:datetime64[ns, CET]
在某些情況下,推斷 DST 是不可能的。在這種情況下,您可以將 ndarray 傳遞給 ambiguous 參數以顯式設置 DST
>>> s = pd.to_datetime(pd.Series(['2018-10-28 01:20:00', ... '2018-10-28 02:36:00', ... '2018-10-28 03:46:00'])) >>> s.dt.tz_localize('CET', ambiguous=np.array([True, True, False])) 0 2018-10-28 01:20:00+02:00 1 2018-10-28 02:36:00+02:00 2 2018-10-28 03:46:00+01:00 dtype:datetime64[ns, CET]
如果 DST 轉換導致時間不存在,您可以使用 timedelta 對象或
‘shift_forward’
或‘shift_backwards’
將這些日期向前或向後移動。>>> s = pd.to_datetime(pd.Series(['2015-03-29 02:30:00', ... '2015-03-29 03:30:00'])) >>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_forward') 0 2015-03-29 03:00:00+02:00 1 2015-03-29 03:30:00+02:00 dtype:datetime64[ns, Europe/Warsaw]
>>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_backward') 0 2015-03-29 01:59:59.999999999+01:00 1 2015-03-29 03:30:00+02:00 dtype:datetime64[ns, Europe/Warsaw]
>>> s.dt.tz_localize('Europe/Warsaw', nonexistent=pd.Timedelta('1H')) 0 2015-03-29 03:30:00+02:00 1 2015-03-29 03:30:00+02:00 dtype:datetime64[ns, Europe/Warsaw]
相關用法
- Python pandas.DatetimeIndex.tz_convert用法及代碼示例
- Python pandas.DatetimeIndex.to_frame用法及代碼示例
- Python pandas.DatetimeIndex.to_period用法及代碼示例
- Python pandas.DatetimeIndex.day用法及代碼示例
- Python pandas.DatetimeIndex.dayofweek用法及代碼示例
- Python pandas.DatetimeIndex.normalize用法及代碼示例
- Python pandas.DatetimeIndex.is_year_start用法及代碼示例
- Python pandas.DatetimeIndex.is_quarter_start用法及代碼示例
- Python pandas.DatetimeIndex.month用法及代碼示例
- Python pandas.DatetimeIndex.floor用法及代碼示例
- Python pandas.DatetimeIndex.is_leap_year用法及代碼示例
- Python pandas.DatetimeIndex.round用法及代碼示例
- Python pandas.DatetimeIndex.month_name用法及代碼示例
- Python pandas.DatetimeIndex.is_year_end用法及代碼示例
- Python pandas.DatetimeIndex.year用法及代碼示例
- Python pandas.DatetimeIndex.nanosecond用法及代碼示例
- Python pandas.DatetimeIndex.is_month_start用法及代碼示例
- Python pandas.DatetimeIndex.hour用法及代碼示例
- Python pandas.DatetimeIndex.day_name用法及代碼示例
- Python pandas.DatetimeIndex.microsecond用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DatetimeIndex.tz_localize。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。