在任意日期请求滚动值并请求没有特定开始/结束日期的范围

时间:2014-11-09 17:01:45

标签: python pandas

我对数据框中的日期采样有几个问题。这是一个例子:

import pandas as pd

dates = pd.bdate_range('2014-01-01', periods=10)
df = pd.DataFrame(range(10), index=dates)

产生这个数据框:

2014-01-01   0
2014-01-02   1
2014-01-03   2
2014-01-06   3
2014-01-07   4
2014-01-08   5
2014-01-09   6
2014-01-10   7
2014-01-13   8
2014-01-14   9

1)如果我想获得索引中不可用日期的正向滚动值,我该怎么做?举个例子:

df['2014-01-04']

产生KeyError。但是,我希望得到值2,作为前滚值。有没有办法轻易要求这个,也许像df [' 2014-01-04',roll = FORWARD]?

2)我也希望能够请求范围,无论我的起点或终点是否为现场点。奇怪的是,这在请求范围时起作用,例如:

df['2014-01-01':'2014-01-05']

的产率:

2014-01-01  0
2014-01-02  1
2014-01-03  2

但是,使用.loc时,它不起作用,例如df.loc [' 2014-01-01':' 2014-01-05']休息。是否有可能以相同的方式运行.loc?

感谢您的回复

1 个答案:

答案 0 :(得分:0)

至少有两种方法可以做到:

1)使用切片(如果使用MultiIndex或在两个轴上切片,则使用.loc.ix):

df[df.index < '2014-01-04'] # change '<' to '>' to have forward going dates.

            0
2014-01-01  0
2014-01-02  1
2014-01-03  2

2)使用query

df.query('"2014-01-01" < index < "2014-01-05"')
            0
2014-01-02  1
2014-01-03  2

这两种方式都可以用来解决你的两个问题。