📅  最后修改于: 2023-12-03 14:46:22.609000             🧑  作者: Mango
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
方法即可。