时区处理


时区处理

处理时区通常是时间序列操作中最不愉快的部分。因此,很多时间序列用户选择世界协调时间或UTC,它是格林尼治时间的后继者,也是目前的国际标准。时区通常被表示为UTC的偏置,例如,在夏令时期间,纽约比UTC时间晚4个小时,其余时间晚5个小时。

在Python语言中,时区信息来源于第三方库pytz,其中公开了Olson数据库,这是世界时区信息的汇编。

要获得pytz的时区对象,可使用pytz.timezone:

pandas中的方法可以接收时区名称或时区对象。

1、时区的本地化和转换

默认情况下,pandas中的时间序列是时区简单型的。例如,考虑下面的时间序列:

日期范围可以通过时区集合来生成:

使用tz_localize方法可以从简单时区转换到本地化时区:

一旦时间序列被本地化为某个特定的时区,则可以通过tz_convert将其转换为另一个时区:

tz_localize和tz_convert也是DatetimeIndex的实例方法:

2、时区感知时间戳对象的操作

与时间序列和日期范围类似,单独的Timestamp对象也可以从简单时间戳本地化为时区感知时间戳,并从一个时区转换为另一个时区:

可以在创建Timestamp的时候传递一个时区:

时区感知的Timestamp对象内部存储了一个Unix纪元(1970年1月1日)至今的纳秒数量UTC时间戳数值,该数值在时区转换中是不变的:

在使用pandas的DateOffset进行时间算术时,pandas尽可能遵从夏时制。

3、不同时区间的操作

如果两个时区不同的时间序列需要联合,那么结果将是UTC时间的。由于时间戳以UTC格式存储,这是一个简单的操作,不需要转换:


评论区(0)

评论