用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。