熊猫:如何将int64 epoc秒的索引转换为datetime

时间:2016-06-02 08:30:58

标签: python datetime pandas

我将一些时区信息存储在一个名为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中的时区?

对时区进行识别

1 个答案:

答案 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信息,它会接受字符串pytzdateutil.tz.tzfile