我在数据框中有以下内容:
> 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)
答案 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)