python中的日期时间df子集

python中的日期时间df子集,python,pandas,Python,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-01-07并不存在。如果我要写: exDate = 20120107 df.ix[str(exDate)] 我得到一个关键错误 在这种情况下

基本问题,但我一直在这里遇到问题

我有一个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格式返回?)

此外,更一般地说,例如,获取日期低于20107的索引子集的最简单方法是什么?我似乎在范围方面做得很好,但很难选择日期的上限或下限


谢谢。

要获取日期低于20107的子数据框,您可以使用:

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
要使用以下命令拾取最后一行:

因此,最后一个有效日期:

In [13]: df[:'2012-01-07'].irow(-1).name
Out[13]: '2012-01-06'

要获取日期低于20107的子数据框,您可以使用:

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
要使用以下命令拾取最后一行:

因此,最后一个有效日期:

In [13]: df[:'2012-01-07'].irow(-1).name
Out[13]: '2012-01-06'

谢谢如果我想知道2012-01-06的最后一个可用日期,我需要添加索引吗?如何将其转换为YYYYmmdd str?谢谢。我认为创建一个从'2012-01-06'到20120106的函数是最简单的,类似于
lambda x:x.replace('-','')
。另外:.strftime('%Y%m%d')似乎也会转换谢谢。如果我想知道2012-01-06的最后一个可用日期,我需要添加索引吗?如何将其转换为YYYYmmdd str?谢谢。我认为创建一个从'2012-01-06'到20120106的函数是最简单的,类似于
lambda x:x.replace('-','')
。另外:.strftime('%Y%m%d')似乎也在转换