基本问题,但我在这里遇到问题。
我有一个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-01-07不存在。如果我写的话:
exDate = 20120107
df.ix[str(exDate)]
我收到了一个关键错误。
在这种情况下,我想将我的exDate更改为20120106(最大数字低于20120107)。检查索引以查看日期是否存在以及日期是否存在的最简单方法是什么,选择该数字下方的下一个最高位置(然后以YYYYmmdd格式返回?)
另外,更一般地说,例如,以20120107以下的日期获取索引子集的最简单方法是什么?我似乎对范围做得很好,但很难选择日期之上或之下。
感谢。
答案 0 :(得分:1)
要获取日期低于20120107的子数据框,您可以使用:
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'