我对数据框中的日期采样有几个问题。这是一个例子:
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?
感谢您的回复
答案 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
这两种方式都可以用来解决你的两个问题。