我有5年的S & P 500數據,我試圖將其分組到特定的時間塊中以運行某些分析。我的數據以5分鐘爲增量。在將它讀入一個名爲「過時」的DataFrame中後,我想我可以將它分組爲包含連續行的塊,按照Globex每個交易日的打開和關閉之間的時間增量進行分組。 Globex開放時間爲太平洋標準時間下午3:00(15:00),結束時間爲太平洋標準時間下午1:15(13:15),22.25小時後。因此,我想將數據從下午3點開放到下午1點15分 - 每個塊大約有275行。從DataFrame中選擇CONSECUTIVE行,根據Pandas與Groupby列中的值
的困難是,「交易日」跨越2個不同的日期,爲eaxmple,一個會議日2016年3月6日在15:00打開和關閉的週一,2016年3月7日在 13:15。我無法按'日期'列進行分組,因爲當然,所有的3-6都將在一個塊中,3-7在另一個塊中,當我需要數據塊跨越這兩個日期時,爲了獲得整個 Globex日在一個塊。
對於Pandas和Python我都不太熟悉,我不知道用什麼方法將數據分組到我想要的塊中。一旦數據被隔離,我想提取每個會話/塊的高和低分爲不同的列,併爲15:05開放價格提供一個列。
這裏是什麼我的數據看起來像一個示例:
Date Time Open High Low Close Up Down
0 2015-08-03 15:05 2073.50 2074.00 2073.25 2073.25 210 563
1 2015-08-03 15:10 2073.25 2073.25 2072.25 2072.75 118 632
2 2015-08-03 15:15 2072.75 2072.75 2072.25 2072.50 132 85
3 2015-08-03 15:20 2072.50 2072.75 2072.25 2072.50 95 312
4 2015-08-03 15:25 2072.50 2074.00 2072.50 2073.50 372 264
本來,「日期」列中的值是這樣的:2015年8月3日。我認爲它可能不會被讀爲一個實際的日期對象,所以我使用to_datetime()更改了值,以使'Date'列的值像實際的日期對象一樣讀取,如上面的示例DataFrame中所示。
dated['Date'] =pd.to_datetime(dated['Date'])
當我試圖使用to_datetime(),它成功地改變從15:05到15:05:00的時間來改變在「時間」列中的值,但同時也增加了一天,所以它看起來像這樣︰'2016-03-05 15:05:00',問題是它使用今天的日期爲日期。這顯然不適用於我,因爲我的數據是歷史數據,日期和時間是對歷史價格的參考。
我試圖在「時間」欄更改爲datetime對象的原因是我想我可以把它切成我一個GROUPBY操作過程中需要的塊:
dated = dated['Date'].groupby(dated['15:05' : '13:20'])
這產生和錯誤:
IndexError: invalid slice
所以我會很感激解決這個問題的任何幫助 - 指着我的研究的正確區域。我一直在逐一閱讀熊貓文檔,嘗試不同的方法,但由於我不確定從哪一步開始,我一直在隨機挑選主題閱讀而沒有找到答案。
感謝, 安娜
謝謝亞歷山大, 當我拿到這部分代碼: '日[ 'markt_open'] = FALSE 面膜=(dated.Datetime.dt.time> dt.time(15)) | (datedted.Datetime.dt.time
進口日期時間爲DT – Alexander
喜亞歷山大和感謝這麼多的幫助, 仍是同樣的錯誤:'AttributeError的:「據幀」對象有沒有屬性「datetime'' 進口調整: '進口大熊貓作爲PD - 進口numpy的作爲np - 導入日期時間爲dt'。我也解決了我的錯誤。我在這裏查找Datetime屬性:[鏈接](http://pandas.pydata.org/pandas-docs/version/0.17.0/api.html#dataframe)但找不到文檔。 我不知道我錯過了什麼。 – AnaB29