2016-05-29 78 views
-1

我有一個數據幀(df):AttributeError的:「系列的對象沒有屬性「EWM」

Name: BBG.XLON.VOD.S_MKTCAP_EUR, dtype: float64 
date 
2008-02-04 125761.886753 
2008-02-05 123681.237732 
2008-02-06 124062.436220 
2008-02-07 121107.388396 
2008-02-08 124216.990692 
2008-02-11 122075.831250 
2008-02-12 126868.359688 
2008-02-13 124942.668750 
2008-02-14 124220.030625 
2008-02-15 121296.275000 
2008-02-18 123004.414768 
2008-02-19 119431.907487 
2008-02-20 113577.349414 
類型的

datatype <class 'pandas.core.frame.DataFrame'>

,我試圖計算的指數加權移動平均我希望捕捉的時間序列。

我使用下面的代碼:

df = pd.DataFrame({'': stockData[unique_id+"_MKTCAP_EUR"]}) 

McapResult = df.ewm(alpha=0.1, adjust=False).mean().iloc[-1] 

McapResult是在指數系列

最後的價值,但我得到以下錯誤:

AttributeError: 'DataFrame' object has no attribute 'ewm'

可能有人讓我知道我需要做什麼來解決這個問題嗎?

回答

1

我認爲你可以使用Series.ewm而作爲創造新DataFramedf - 結果是一樣的:

import pandas as pd 

stockData = pd.DataFrame({'BBG.XLON.VOD.S': {pd.Timestamp('2008-02-14 00:00:00'): 124220.030625, pd.Timestamp('2008-02-20 00:00:00'): 113577.34941400001, pd.Timestamp('2008-02-08 00:00:00'): 124216.99069200001, pd.Timestamp('2008-02-13 00:00:00'): 124942.66875, pd.Timestamp('2008-02-15 00:00:00'): 121296.27499999999, pd.Timestamp('2008-02-06 00:00:00'): 124062.43622, pd.Timestamp('2008-02-19 00:00:00'): 119431.90748699999, pd.Timestamp('2008-02-04 00:00:00'): 125761.886753, pd.Timestamp('2008-02-11 00:00:00'): 122075.83125, pd.Timestamp('2008-02-07 00:00:00'): 121107.38839600001, pd.Timestamp('2008-02-05 00:00:00'): 123681.23773199999, pd.Timestamp('2008-02-18 00:00:00'): 123004.414768, pd.Timestamp('2008-02-12 00:00:00'): 126868.35968800001}}) 
stockData.index.name = 'date' 
print (stockData) 
      BBG.XLON.VOD.S 
date      
2008-02-04 125761.886753 
2008-02-05 123681.237732 
2008-02-06 124062.436220 
2008-02-07 121107.388396 
2008-02-08 124216.990692 
2008-02-11 122075.831250 
2008-02-12 126868.359688 
2008-02-13 124942.668750 
2008-02-14 124220.030625 
2008-02-15 121296.275000 
2008-02-18 123004.414768 
2008-02-19 119431.907487 
2008-02-20 113577.349414 

unique_id = 'BBG.XLON.VOD.S' 
McapResult = stockData[unique_id].ewm(alpha=0.1, adjust=False).mean().iloc[-1] 
print (McapResult) 
122786.42433 

編輯:

我認爲錯誤原因爲0.18.0大熊貓的低優化版本,因爲pandas.Series.ewmNew in version 0.18.0

+0

謝謝,我試過了代碼,但仍然得到AttributeError:'系列'對象沒有屬性'ewm'問題。不知道我在做什麼錯 – Stacey

+0

什麼是你的熊貓版本? 'print pd.show_versions()'。如果低於'0.18',這是問題,因爲'pandas.Series.ewm'是'0.18.0版本中的新功能。' - [link](http://pandas.pydata.org/pandas-docs/stable/generated /pandas.Series.ewm.html)。我有最後一個版本'0.18.1',它工作得很好。 – jezrael

+0

謝謝,是的,我運行0.17,所以我想升級是爲了:)。有沒有關於如何輕鬆做到這一點的文件?謝謝 – Stacey

相關問題