1

我正在尝试使用 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 must be integers, not str EMA = pd.Series(pd .ewma(df['Close'], span = n, min_periods = n - 1), name = 'EMA_' + str(n))

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

4

1 回答 1

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)
于 2017-04-04T10:58:41.587 回答