我可以使用 python datetime 对象读取和切片 pandas 数据帧,但是我被迫只使用现有日期在索引中。例如,这有效:
>>> data
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 252 entries, 2010-12-31 00:00:00 to 2010-04-01 00:00:00
Data columns:
Adj Close 252 non-null values
dtypes: float64(1)
>>> st = datetime.datetime(2010, 12, 31, 0, 0)
>>> en = datetime.datetime(2010, 12, 28, 0, 0)
>>> data[st:en]
Adj Close
Date
2010-12-31 593.97
2010-12-30 598.86
2010-12-29 601.00
2010-12-28 598.92
但是,如果我使用 DF 中不存在的开始或结束日期,则会收到 python KeyError。
我的问题:如何查询数据框对象的日期范围;即使开始日期和结束日期不存在于 DataFrame 中。 pandas 是否允许基于范围的切片?
我正在使用 pandas 版本 0.10.1
Use searchsorted
首先找到最近的时间,然后用它来切片。
In [15]: df = pd.DataFrame([1, 2, 3], index=[dt.datetime(2013, 1, 1), dt.datetime(2013, 1, 3), dt.datetime(2013, 1, 5)])
In [16]: df
Out[16]:
0
2013-01-01 1
2013-01-03 2
2013-01-05 3
In [22]: start = df.index.searchsorted(dt.datetime(2013, 1, 2))
In [23]: end = df.index.searchsorted(dt.datetime(2013, 1, 4))
In [24]: df.iloc[start:end]
Out[24]:
0
2013-01-03 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)