📜  Python| Pandas DataFrame.tz_localize(1)

📅  最后修改于: 2023-12-03 14:46:22.609000             🧑  作者: Mango

Python | Pandas DataFrame.tz_localize

tz_localize是Pandas DataFrame对象的一个方法,可以将时区不明确的时间序列转换为指定时区的时间序列。

语法
DataFrame.tz_localize(tz, axis=0, level=None, copy=True, ambiguous='raise')
参数
  • tz: str或pytz.tzinfo,用于指定要转换为的时区。如果为None,则会将所有时间序列视为本地时间。

  • axis: {0或"index", 1或"columns"}, 默认为0。如果为0,则为行上的每个时间序列设置时区,如果为1,则为列上的每个时间序列设置时区。

  • level: int或 str, 默认为None。如果轴由多层索引,请在此级别上指定要转换的时间序列。

  • copy: bool, 默认为True。如果为True,则复制当前对象。

  • ambiguous: "raise", "NaT"或None。可能存在二义性时如何进行处理。默认为"raise",当存在二义性时则会抛出异常,"NaT"会将二义性日期转换为NaT(Not a Time),None则会在存在二义性时保留它。

返回值

DataFrame对象,将其所有时间序列转换为指定时区的时间序列。

示例

以下示例将展示如何使用tz_localize方法将一个不明确的时间序列转换为指定时区的时间序列:

import pandas as pd
import pytz

# 创建一个不明确时区的时间序列
dates = pd.date_range('2022-01-01', periods=4)
s = pd.Series([1, 2, 3, 4], index=dates)
print(s)

# 输出:
# 2022-01-01    1
# 2022-01-02    2
# 2022-01-03    3
# 2022-01-04    4
# dtype: int64

# 将此时间序列转换为纽约时区的时间序列
ny_tz = pytz.timezone('America/New_York')
s_ny = s.tz_localize(ny_tz)
print(s_ny)

# 输出:
# 2022-01-01 00:00:00-05:00    1
# 2022-01-02 00:00:00-05:00    2
# 2022-01-03 00:00:00-05:00    3
# 2022-01-04 00:00:00-05:00    4
# dtype: int64

# 将此时间序列转换为北京时区的时间序列
bj_tz = pytz.timezone('Asia/Shanghai')
s_bj = s.tz_localize(bj_tz)
print(s_bj)

# 输出:
# 2022-01-01 00:00:00+08:00    1
# 2022-01-02 00:00:00+08:00    2
# 2022-01-03 00:00:00+08:00    3
# 2022-01-04 00:00:00+08:00    4
# dtype: int64

以上代码首先创建了一个不明确时区的时间序列s,然后使用tz_localize方法将该时间序列转换为纽约时区的时间序列s_ny和北京时区的时间序列s_bj。在这个示例中,我们使用pytz模块指定时区。如果不想指定时区,则将参数tz设置为None,再调用tz_localize方法即可。

参考
  1. pandas.DataFrame.tz_localize