熊貓的滾動和移動的概念掙扎。有很多好的建議,包括在這個論壇上,但我很失敗地把這些應用到我的場景中。Python熊貓時間系列w /分層索引和滾動/移位
現在我使用傳統的循環遍歷時間序列,但呃,花了8小時迭代超過150,000行,這是大約3天的所有代價數據。有兩個月的數據處理它可能不會完成後,我從休假回來,沒有提到電力切斷的風險之後,我不得不重新開始,這次沒有休假等待。
我有以下的15分鐘股價時間序列(分級指數DATETIME(時間戳)和股票,唯一的原列closePrice):
closePrice
datetime ticker
2014-02-04 09:15:00 AAPL xxx
EQIX xxx
FB xxx
GOOG xxx
MSFT xxx
2014-02-04 09:30:00 AAPL xxx
EQIX xxx
FB xxx
GOOG xxx
MSFT xxx
2014-02-04 09:45:00 AAPL xxx
EQIX xxx
FB xxx
GOOG xxx
MSFT xxx
我需要添加兩列:
- 12sma,12日均線。經過幾個小時的搜索,最好的建議是使用rolling_mean,所以我試了一下。但是,由於我的TS結構不起作用,即它能夠自頂向下運行,第一個MA根據前12行進行計算,而不管不同的股票價格。我該如何使平均值基於指數,即第一個日期時間然後行情,所以我得到MA說AAPL?目前它確實(AAPL + EQIX + FB + GOOG + MSFT + AAPL ...至第12行)/ 12
- 一旦我得到12sma列,我需要12ema列,12天指數MA。對於計算,每個行情的時間序列中的第一個值將從同一行復制12sma值。隨後,我需要來自同一行的closePrice和來自前一行的12ema,即過去15分鐘。我做了很長時間的研究,似乎解決方案將是滾動和移動的結合,但我無法弄清楚如何將它們放在一起。
任何幫助,我將不勝感激。
謝謝。
編輯:
感謝傑夫的技巧,交換和排序九級,我能夠得到與rolling_mean的12sma右後(),並用努力設法插入來自12sma在複印的第一12ema值相同的時間戳:
close 12sma 12ema
sec_code datetime
AAPL 2014-02-05 11:45:00 113.0 NaN NaN
2014-02-05 12:00:00 113.2 NaN NaN
2014-02-05 13:15:00 112.9 NaN NaN
2014-02-05 13:30:00 113.2 NaN NaN
2014-02-05 13:45:00 113.0 NaN NaN
2014-02-05 14:00:00 113.1 NaN NaN
2014-02-05 14:15:00 113.3 NaN NaN
2014-02-05 14:30:00 113.3 NaN NaN
2014-02-05 14:45:00 113.3 NaN NaN
2014-02-05 15:00:00 113.2 NaN NaN
2014-02-05 15:15:00 113.2 NaN NaN
2014-02-05 15:30:00 113.3 113.16 113.16
2014-02-05 15:45:00 113.3 113.19 NaN
2014-02-05 16:00:00 113.2 113.19 NaN
2014-02-06 09:45:00 112.6 113.16 NaN
2014-02-06 10:00:00 113.5 113.19 NaN
2014-02-06 10:15:00 113.8 113.25 NaN
2014-02-06 10:30:00 113.5 113.29 NaN
2014-02-06 10:45:00 113.7 113.32 NaN
2014-02-06 11:00:00 113.5 113.34 Nan
我瞭解大熊貓有pandas.stats.moments.ewma但我更喜歡使用一個公式,我從一本書,「此刻」和12ema從以前的行需要收盤價得到。
因此,我試圖從2月5日,15:45以後開始填充12ema列。我想申請()的功能,但移給了一個錯誤:
def f12ema(x):
K = 2/(12 + 1)
return x['price_nom'] * K + x['12ema'].shift(-1) * (1-K)
df1.apply(f12ema, axis=1)
AttributeError: ("'numpy.float64' object has no attribute 'shift'", u'occurred at index 2014-02-05 11:45:00')
掠過我的心是rolling_appy(),但它是超出了我的知識,另一種可能性。
非常感謝傑夫!花了我一段時間來研究你的答案。我不知道什麼交換索引級別可以實現,直到我閱讀你的答案和排序索引絕對加快了事情! –