2015-08-15 60 views
1

我是新來的使用Python熊貓,並有以下腳本從Excel文件中拉時間系列數據,設置日期=指數,然後將要執行各種計算數據按日期參考。腳本:Python中的日期範圍索引熊貓

df = pd.read_excel("myfile.xls") 
df = df.set_index(df.Date) 
df = df.drop("Date",1) 
df.index.name = None 
df.head() 

,它的輸出(給你的數據的意義上)是:

   Px1  Px2  Px3 Px4  Px5  Px6   Px7  
2015-08-12 19.850000 10.25 7.88 10.90 109.349998 106.650002 208.830002 
2015-08-11 19.549999 10.16 7.81 10.88 109.419998 106.690002 208.660004 
2015-08-10 19.260000 10.07 7.73 10.79 109.059998 105.989998 210.630005 
2015-08-07 19.240000 10.08 7.69 10.92 109.199997 106.430000 207.919998 
2015-08-06 19.250000 10.09 7.76 10.96 109.010002 106.010002 208.350006 

當我嘗試檢索數據基於像df.loc['20150806']一個日期的作品,但是當我嘗試檢索像df.loc['20150806':'20150812']這樣的切片我返回Empty DataFrame

同樣,索引是D型細胞= 'datetime64 [NS]',長度= 1412,DateTimeIndex FREQ =無,TZ =無

就像我說,我的最終目標是要能夠組數據按日,月,年,不同時期等進行計算,並對數據進行計算。我想給這方面,但甚至不想去那個在這裏,因爲我清楚地停留在一些更基本的 - 也許是誤解如何與DateTimeIndex

謝謝操作。

編輯:意思是還包括,我認爲與索引引用的主要問題與freq = 0,BC當我嘗試更簡單的例子與連續日期系列,我沒有這個問題。

+1

您的索引沒有排序,或者至少是遞減而非遞增。這就是爲什麼切片返回一個空的數據幀(8月12日是在8月6日之前) – joris

+0

嘗試'df = df.sort_index()',然後嘗試再次切片。 – joris

+0

根據@joris的建議進行擴展,也可以通過以下兩種方式之一來反轉順序:'df.loc ['2015-08-12':'2015-08-10']'或'df.loc ['2015-08-10':'2015-08-12': - 1]'但是沒有明確的排序(當然是一個好建議),並不一定意味着片的結果將被排序。你實際上在做一個'iloc'風格的切片。 – JohnE

回答

0

df.loc['2015-08-12':'2015-08-10']df.loc['2015-08-10':'2015-08-12':-1]都工作。 df = df.sort_index()和切片我正在嘗試的方式也有效。謝謝你們。我錯過了那裏的樹林。