python pandas dataframe按日期条件切片

我能够使用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中没有开始日期和结束日期。熊猫是否允许基于范围的切片?

我正在使用熊猫0.10.1版

回答:

用于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

以上是 python pandas dataframe按日期条件切片 的全部内容, 来源链接: utcz.com/qa/425930.html

回到顶部