我有带有UTC时间戳记的数据。我想将此时间戳的时区转换为“ US / Pacific”,并将其作为层次结构索引添加到pandas DataFrame。我已经能够将时间戳转换为索引,但是当我尝试将其作为列或索引添加回DataFrame时,它将丢失时区格式。>>> import pandas as pd>>> dat = pd.DataFrame({'label':['a', 'a', 'a', 'b', 'b', 'b'], 'datetime':['2011-07-19 07:00:00', '2011-07-19 08:00:00', '2011-07-19 09:00:00', '2011-07-19 07:00:00', '2011-07-19 08:00:00', '2011-07-19 09:00:00'], 'value':range(6)})>>> dat.dtypes#datetime object#label object#value int64#dtype: object现在,如果我尝试直接转换系列,则会遇到错误。>>> times = pd.to_datetime(dat['datetime'])>>> times.tz_localize('UTC')#Traceback (most recent call last):# File "<stdin>", line 1, in <module># File "/Users/erikshilts/workspace/schedule-detection/python/pysched/env/lib/python2.7/site-packages/pandas/core/series.py", line 3170, in tz_localize# raise Exception('Cannot tz-localize non-time series')#Exception: Cannot tz-localize non-time series如果将其转换为索引,则可以将其作为时间序列进行操作。注意,索引现在具有太平洋时区。>>> times_index = pd.Index(times)>>> times_index_pacific = times_index.tz_localize('UTC').tz_convert('US/Pacific')>>> times_index_pacific#<class 'pandas.tseries.index.DatetimeIndex'>#[2011-07-19 00:00:00, ..., 2011-07-19 02:00:00]#Length: 6, Freq: None, Timezone: US/Pacific但是,现在我遇到了将索引添加回数据框的问题,因为它失去了时区格式:>>> dat_index = dat.set_index([dat['label'], times_index_pacific])>>> dat_index# datetime label value#label #a 2011-07-19 07:00:00 2011-07-19 07:00:00 a 0# 2011-07-19 08:00:00 2011-07-19 08:00:00 a 1# 2011-07-19 09:00:00 2011-07-19 09:00:00 a 2#b 2011-07-19 07:00:00 2011-07-19 07:00:00 b 3# 2011-07-19 08:00:00 2011-07-19 08:00:00 b 4# 2011-07-19 09:00:00 2011-07-19 09:00:00 b 5您会注意到索引返回到UTC时区,而不是转换后的太平洋时区。如何更改时区并将其作为索引添加到DataFrame?
添加回答
举报
0/150
提交
取消