【问题标题】:Excel xlwings data input for Python Technical IndicatorsPython 技术指标的 Excel xlwings 数据输入
【发布时间】:2017-08-29 11:37:49
【问题描述】:

我正在尝试使用 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},我收到以下错误消息 类型错误:列表索引必须是整数,而不是 str EMA = pd.Series(pd.ewma(df['Close'], span = n, min_periods = n - 1), name = 'EMA_' + str(n))

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

【问题讨论】:

  • EMA = ({1,2,3,4,5}, 5} 不是有效的 Python 语法,请修复它。我假设您正在调用 EMA([1, 2, 3, 4 , 5], 5) 或类似的东西。

标签: python excel pandas xlwings technical-indicator


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多