2017-04-04 72 views
1

我正在嘗試使用xlwings來複制一個簡單的技術分析指標。但是,列表/數據似乎不能讀取Excel值。下面是代碼針對Python的Excel xlwings數據輸入技術指標

import pandas as pd 
import datetime as dt 
import numpy as np 

@xw.func 
def EMA(df, n): 
    EMA = pd.Series(pd.ewma(df['Close'], span = n, min_periods = n - 1), name = 'EMA_' + str(n)) 
    df = df.join(EMA) 
    return df 

當我輸入Excel數據列表:EMA =({1,2,3,4,5},5},我得到了以下錯誤消息 類型錯誤:列表索引必須是整數,不是str EMA = pd.Series(pd.ewma(df ['Close'],span = n,min_periods = n - 1),name ='EMA_'+ str(n))

)非常感謝!

+0

EMA =({1,2,3,4,5 },5}是無效的Python語法,請解決。我假設你打電話給EMA([1,2,3,4,5],5)或類似的東西。 – acidtobi

回答

1

EMA()需要一個DataFrame df和一個標量n,它在源DataFrame的一個單獨的列中返回EMA,你傳遞一個簡單的值列表,這不應該工作。

構造一個數據幀,並分配的值,以關閉柱:與此數據幀

v = range(100) # use your list of values instead 
df = pd.DataFrame(v, columns=['Close']) 

呼叫EMA():

EMA(df, 5)