Excel技术指标的Excel xlwings数据输入

时间:2017-04-04 10:16:09

标签: python excel pandas xlwings technical-indicator

我正在尝试使用xlwings复制一个简单的技术分析指标。但是,列表/数据似乎无法读取Excel值。以下是代码

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}时,收到以下错误消息 TypeError:list indices必须是整数,而不是str EMA = pd.Series(pd.ewma(df ['Close'],span = n,min_periods = n - 1),name ='EMA_'+ str(n))< / p>

(专家)非常感谢!感谢。

1 个答案:

答案 0 :(得分:1)

EMA()需要DataFrame df和标量n,并在源DataFrame的单独列中返回EMA。您正在传递一个简单的值列表,这不应该有效。

构造一个DataFrame并将值分配给Close列:

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

使用此DataFrame调用EMA():

EMA(df, 5)