用法:
DataFrame.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise', nonexistent='raise')
将 Series 或 DataFrame 的 tz-naive 索引本地化到目标时区。
此操作本地化索引。要本地化 timezone-naive 系列中的值,请使用
Series.dt.tz_localize()
。- tz:str 或 tzinfo
- axis:要定位的轴
- level:int, 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。
- nonexistent:str,默认 ‘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
相关用法
- Python pandas.DataFrame.to_numpy用法及代码示例
- Python pandas.DataFrame.truncate用法及代码示例
- Python pandas.DataFrame.to_json用法及代码示例
- Python pandas.DataFrame.to_markdown用法及代码示例
- Python pandas.DataFrame.to_sql用法及代码示例
- Python pandas.DataFrame.transpose用法及代码示例
- Python pandas.DataFrame.to_xml用法及代码示例
- Python pandas.DataFrame.transform用法及代码示例
- Python pandas.DataFrame.to_latex用法及代码示例
- Python pandas.DataFrame.to_pickle用法及代码示例
- Python pandas.DataFrame.to_string用法及代码示例
- Python pandas.DataFrame.to_csv用法及代码示例
- Python pandas.DataFrame.to_dict用法及代码示例
- Python pandas.DataFrame.to_clipboard用法及代码示例
- Python pandas.DataFrame.to_hdf用法及代码示例
- Python pandas.DataFrame.to_excel用法及代码示例
- Python pandas.DataFrame.truediv用法及代码示例
- Python pandas.DataFrame.to_records用法及代码示例
- Python pandas.DataFrame.take用法及代码示例
- Python pandas.DataFrame.to_stata用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.tz_localize。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。