我将一些时区信息存储在一个名为tz_pytz
的变量中 - 我将这个文件与数据帧一起形成hdf5
文件,但现在这并不重要。
我有一个int64索引,代表自epoch以来的第二个值,我想将其视为带有时区信息的时间戳:
>>> df = pd.DataFrame(h5file['time']).sec
Int64Index([0, ...], dtype='int64')
>>> dt = pd.to_datetime(df, unit='s')
>>> type(dt[0])
pandas.tslib.Timestamp
>>> dt[0].tz is None
True
>>> dt
0 2015-05-29 07:18:22
1 2015-05-29 07:18:23
...
4478 2015-05-29 08:33:06
4479 2015-05-29 08:33:07
Name: sec, Length: 4480, dtype: datetime64[ns]
这样可以正常工作,但数据不是时区感知的(tz is None
)。如何根据py_pytz
中的时区?
答案 0 :(得分:1)
使用.tz_localize
为您的日期时间列添加时区:
In [12]:
df = pd.DataFrame(index=np.arange(10))
df['timestamp'] = pd.to_datetime(df.index, unit='s')
df['timestamp'] = df['timestamp'].dt.tz_localize('Asia/Hong_Kong')
df['timestamp']
Out[12]:
0 1970-01-01 00:00:00+08:00
1 1970-01-01 00:00:01+08:00
2 1970-01-01 00:00:02+08:00
3 1970-01-01 00:00:03+08:00
4 1970-01-01 00:00:04+08:00
5 1970-01-01 00:00:05+08:00
6 1970-01-01 00:00:06+08:00
7 1970-01-01 00:00:07+08:00
8 1970-01-01 00:00:08+08:00
9 1970-01-01 00:00:09+08:00
Name: timestamp, dtype: datetime64[ns, Asia/Hong_Kong]
这会在您的时间戳列中添加/删除tz
信息,它会接受字符串pytz
或dateutil.tz.tzfile