转换Pandas数据框时间戳失败

11

我对Pandas的使用还很陌生,正在努力弄清楚为什么这个时间戳无法转换。举个例子,一个时间戳的字符串是'2010-10-06 16:38:02'。代码如下:

newdata = pd.DataFrame.from_records(data, columns = ["col1", "col2", "col3", "timestamp"], index = "timestamp")
newdata.index = newdata.index.tz_localize('UTC').tz_convert('US/Eastern')

并且收到了这个错误:

AttributeError: 'Index' object has no attribute 'tz_localize'

有人在这里评论说tz_localize方法不适用于索引类型,因此我尝试将其转换为列,但是那样会出现错误。

TypeError: index is not a valid DatetimeIndex or PeriodIndex

然后我发现了这个网站,它说tz_localize仅在索引上起作用。

如果有人能帮忙,将不胜感激!我正在使用Pandas 0.15.2。我相信这段代码可能适用于早期版本的某些人,但我不能切换到其他版本。

编辑:

好吧,在稍微尝试一下之后,我发现这不会抛出任何错误,并且似乎在短期内实现了我想要的效果:newdata.index=pd.DatetimeIndex(newdata.index).tz_localize('UTC').tz_convert('US/‌​Eastern')


Erin,请您添加一个答案并将问题标记为已解决,否则它会出现在未回答的问题中,让人感到困惑... - sophros
2个回答

4

我被要求提供一个正式的回答,而不仅仅是编辑我的问题,所以在此提供。请注意,它基于上面的答案,但那个答案对我来说并不完全适用。

newdata.index=pd.DatetimeIndex(newdata.index).tz_localize('UTC').tz_convert('US/‌​Eastern')

这段代码的作用是将一个时间序列从UTC时区转换为美国东部时区(US/Eastern),并指定新的时间索引。


0
你需要先在 Pandas 中将索引列转换为系列类型:
newdata.index.to_series().tz_localize('UTC').tz_convert('US/Eastern')

那不是走捷径的方式。@Erin提到了这一点,我认为那是正确的方式。 - jhoepken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接