【问题标题】:Assign a TimeZone to Dataframe Datetime Column将时区分配给数据框日期时间列
【发布时间】:2022-02-08 16:13:29
【问题描述】:

我不知道如何为数据框分配时区。我有一个名为“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) 分配给索引位置 ('date') 中的日期时间列时不断遇到的错误示例。

df.date.tz_localize('UTC')
Traceback (most recent call last):

  Input In [10] in <module>
    df.tz_localize('UTC')

  File ~\Anaconda3\envs\ARIMA\lib\site-packages\pandas\core\generic.py:9977 in tz_localize
    ax = _tz_localize(ax, tz, ambiguous, nonexistent)

  File ~\Anaconda3\envs\ARIMA\lib\site-packages\pandas\core\generic.py:9959 in _tz_localize
    raise TypeError(

TypeError: index is not a valid DatetimeIndex or PeriodIndex

【问题讨论】:

标签: python pandas dataframe datetime timezone


【解决方案1】:

要为列设置时区,请解析to_datetime 并将Series 的dt accessor 使用为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')convert 到另一个时区。

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多