2013-02-04 70 views
1

基本問題,但我一直遇到問題在這裏。子集日期時間df在熊貓python

我有一個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)] 

我得到一個關鍵錯誤。

在這種情況下,我想將我的日期更改爲20120106(20120107以下的最大數字)。檢查索引以查看日期是否存在以及日期是否存在的最簡單方法是什麼?請選擇該數字下面的最高位(然後以YYYYmmdd格式返回?)

另外,更一般地說,什麼是例如,如何獲取日期低於20120107的索引子集的最簡單方法?我似乎對範圍做得很好,但在日期之上或之下選擇時間很困難。

謝謝。

回答

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' 
+0

謝謝。如果我想抓住可用的最後日期2012-01-06添加.index?我如何將它轉換爲YYYYmmdd str?謝謝。 – user1911092

+0

我認爲從'2012-01-06'到20120106創建一個函數是最容易的,比如'lambda x:x.replace(' - ','')'。 –

+0

另外:.strftime('%Y%m%d')似乎也會轉換 – user1911092