在Pandas中对日期时间数据框进行子集选择
这是个基础问题,但我在这里总是遇到麻烦。
我有一个数据框(df):
df:
val
date
2012-01-01 4.2
2012-01-02 3.7
2012-01-03 6.2
2012-01-04 1.2
2012-01-05 2.4
2012-01-06 2.3
2012-01-08 4.5
如你所见,2012年1月7日这个日期不存在。如果我写:
exDate = 20120107
df.ix[str(exDate)]
我会遇到一个键错误(Key Error)。
在这种情况下,我想把我的exDate改成20120106(也就是20120107下面的最大日期)。有没有简单的方法可以检查一个索引,看看某个日期是否存在,如果不存在,就选择那个日期下面的下一个最大值(然后以YYYYmmdd的格式返回)?
另外,更一般来说,怎样才能简单地获取一个日期在20120107以下的索引子集呢?我在处理范围方面做得不错,但在选择某个日期的上下方面遇到了一些困难。
谢谢。
1 个回答
1
要获取日期在2012年1月7日之前的子数据框,你可以使用:
In [11]: df[:'2012-01-07']
Out[11]:
val
date
2012-01-01 4.2
2012-01-02 3.7
2012-01-03 6.2
2012-01-04 1.2
2012-01-05 2.4
2012-01-06 2.3
如果你想用 irow
来选择最后一行的话:
In [12]: df[:'2012-01-07'].irow(-1)
Out[12]:
val 2.3
Name: 2012-01-06
这样就能找到最后一个有效的日期:
In [13]: df[:'2012-01-07'].irow(-1).name
Out[13]: '2012-01-06'