【发布时间】:2016-11-24 22:37:05
【问题描述】:
我有一个从 MongoDB 读取的数据list。可以在this gist 中找到数据的子集。我正在从此列表中创建一个 DataFrame,使用日期字段创建一个DatetimeIndex。这些日期最初是用我当地的时区记录的,但在 Mongo 中它们没有附加时区信息,所以我按照 here 的建议更正了 DST。
from datetime import datetime
from dateutil import tz
# data is the list from the gist
dates = [x['Date'] for x in data]
idx = pd.DatetimeIndex(dates, freq='D')
idx = idx.tz_localize(tz=tz.tzutc())
idx = idx.tz_convert(tz='Europe/Dublin')
idx = idx.normalize()
frame = DataFrame(data, index=idx)
frame = frame.drop('Date', 1)
一切似乎都很好,我的框架看起来像这样
Events ID
2008-03-31 00:00:00+01:00 0.0 116927302
2008-03-30 00:00:00+00:00 2401.0 116927302
2008-03-31 00:00:00+01:00 0.0 116927307
2008-03-30 00:00:00+00:00 0.0 116927307
2008-03-31 00:00:00+01:00 0.0 121126919
2008-03-30 00:00:00+00:00 1019.0 121126919
2008-03-30 00:00:00+00:00 0.0 121126922
2008-03-31 00:00:00+01:00 0.0 121126922
2008-03-30 00:00:00+00:00 0.0 121127133
2008-03-31 00:00:00+01:00 0.0 121127133
2008-03-31 00:00:00+01:00 0.0 131677370
2008-03-30 00:00:00+00:00 0.0 131677370
2008-03-30 00:00:00+00:00 0.0 131677416
2008-03-31 00:00:00+01:00 0.0 131677416
现在我想使用原始的 DatetimeIndex 和 ID 列来创建一个MultiIndex,如图所示here。 但是,当我尝试此操作时,我收到最初创建 DatetimeIndex 时未引发的错误
frame.set_index([frame.ID, idx])
NonExistentTimeError: 2008-03-30 01:00:00
如果我只是在没有 MultiIndex 的情况下执行 frame.set_index(idx),它不会引发错误
版本
- Python 2.7.11
- 熊猫 0.18.0
【问题讨论】:
标签: python datetime pandas dataframe