Pandas datetime tz-aware



我使用的是pandas,其中一列是年份和时间结构。就像

2017-10-06T00:00:00+00:00

至少在开始的时候,我想我从来没有给它分配过时区。而当前的'dtype'是'object'

但是,如果我试图使用

设置时区
data[datetime] = pd.to_datetime(data[datetime], errors='coerce', yearfirst=True).dt.tz_localize('UTC')

弹出错误提示"已经意识到tz_aware,请使用tz_convert转换">

我的问题是,它原本是"对象",它怎么能被感知呢?如果它支持z-aware,那么它使用的是哪个时区?如果我使用tz_convert,它会改变列中的值吗?

因为我有另一个数据帧可以使用tz_localalize ('UTC')而没有任何问题。我想比较这两个数据帧,所以我不希望第一个数据帧的值改变为其他东西,如果我使用tz_convert('UTC')。

如果你的日期时间是在UTC,那么你就完成了!对于像"2017-10-06T00:00:00+00:00"这样的文本'+00:00'表示已经在UTC时区。

如果你知道这是不正确的,因为正如你所说的,"不要认为我曾经给它分配过时区。"您可以删除此本地化以使时区为'naive'

df.index
Out[2]: DatetimeIndex(['2017-10-06 00:00:00+00:00'], dtype='datetime64[ns, UTC]', freq=None)
df.index.tz_localize(None)
Out[3]: DatetimeIndex(['2017-10-06'], dtype='datetime64[ns]', freq=None)

现在它没有本地化,你可以设置一个新的时区,现在转换到它所属的地方。

df.index.tz_localize('America/New_York')
Out[8]: DatetimeIndex(['2017-10-06 00:00:00-04:00'], dtype='datetime64[ns, America/New_York]', freq=None)
df.index.tz_localize('America/New_York').tz_convert('UTC')
Out[9]: DatetimeIndex(['2017-10-06 04:00:00+00:00'], dtype='datetime64[ns, UTC]', freq=None)

最新更新