为数据帧日期时间列指定时区



我不知道如何为数据帧分配时区。我有一个名为"df"的df,看起来像这样:

df
Out[67]: 
date  daily_flow
0    2002-02-13    144000.0
1    2002-02-14    184000.0
2    2002-02-15    159000.0
3    2002-02-16    126000.0
4    2002-02-17    114000.0
...         ...
7277 2022-02-02    152000.0
7278 2022-02-03    159000.0
7279 2022-02-04    150000.0
7280 2022-02-05    165000.0
7281 2022-02-06    148000.0
[7282 rows x 2 columns]
df.dtypes
Out[68]: 
date          datetime64[ns]
daily_flow           float64
dtype: object

我已经阅读了文件和其他帖子,不清楚如何分配";日期";列到时区,如"美国/太平洋"。非常感谢。

下面是一个错误的例子,当我尝试将时区(UTC(分配给索引位置("日期"(的日期时间列时,我一直会遇到这个错误。

df.date.tz_localize('UTC')
Traceback (most recent call last):
Input In [10] in <module>
df.tz_localize('UTC')
File ~Anaconda3envsARIMAlibsite-packagespandascoregeneric.py:9977 in tz_localize
ax = _tz_localize(ax, tz, ambiguous, nonexistent)
File ~Anaconda3envsARIMAlibsite-packagespandascoregeneric.py:9959 in _tz_localize
raise TypeError(
TypeError: index is not a valid DatetimeIndex or PeriodIndex

若要为列设置时区,请解析为To_datetime,并使用Series的dt访问器进行tz_localize。例如:

df
Out[3]: 
date  daily_flow
0  2002-02-13    144000.0
1  2002-02-14    184000.0
2  2002-02-15    159000.0
df['date'] = pd.to_datetime(df['date']).dt.tz_localize('UTC')
df['date']
Out[5]: 
0   2002-02-13 00:00:00+00:00
1   2002-02-14 00:00:00+00:00
2   2002-02-15 00:00:00+00:00
Name: date, dtype: datetime64[ns, UTC]

在本例中,您可以将"UTC"替换为相应的时区。您也可以使用相同的方法(.dt.tz_convert('your-time-zone')(转换到另一个时区。

最新更新