1

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

我有一个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 的索引子集的最简单方法是什么?我似乎在范围方面做得很好,但很难选择高于或低于日期。

谢谢。

4

1 回答 1

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'
于 2013-02-04T20:53:51.130 回答