从熊猫时间戳转换时区

时间:2014-09-03 20:57:58

标签: python pandas timezone

我在数据框中有以下内容:

> df['timestamps'].loc[0]
Timestamp('2014-09-02 20:24:00')

我知道它使用的时区(我认为它是 GMT ),并希望将整个列转换为 EST 。我怎么能在熊猫中做到这一点?

作为参考,我找到了其他线程:

但它们与datetime个时间戳一起使用。 E.g:

> datetime.datetime.fromtimestamp(df['timestamps'].loc[0], tz=None)
returns:

TypeError                                 Traceback (most recent call last)
----> 2 datetime.datetime.fromtimestamp(ts, tz=None)

TypeError: an integer is required (got type Timestamp)

2 个答案:

答案 0 :(得分:19)

只需使用tz_convert方法。

假设您有一个Timestamp对象:

   stamp = Timestamp('1/1/2014 16:20', tz='America/Sao_Paulo')
   new_stamp = stamp.tz_convert('US/Eastern')

如果您有兴趣转换日期范围:

   range = date_range('1/1/2014', '1/1/2015', freq='S', tz='America/Sao_Paulo')
   new_range = range.tz_convert('US/Eastern')

对于大型时间序列:

   import numpy as np
   ts = Series(np.random.randn(len(range)), range)
   new_ts = ts.tz_convert('US/Eastern')

如另一个答案所述,如果您的数据没有设置时区,则需要tz_localize

   data.tz_localize('utc')

答案 1 :(得分:3)