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より前の日付のサブDataFrameを取得するには、次を使用できます。

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 に答える