Python 获取索引器:当试图将技术指标应用于股票信息的数据帧时,单个位置索引器是不受限制的

Python 获取索引器:当试图将技术指标应用于股票信息的数据帧时,单个位置索引器是不受限制的,python,pandas,technical-indicator,Python,Pandas,Technical Indicator,我是python新手,在使用pandas_ta扩展将一些技术指标应用于股票信息的数据框架时遇到了一些问题。原始数据帧“nonStockdf”由列构成 ['index', 'date', 'ticker', 'adj_close', 'close', 'open', 'high', 'low', 'volume', 'EMA_9', 'EMA_50', 'EMA_200', 'RSI_14', 'MACD_12_26_9', 'MACDH_12_26_9', 'MACD

我是python新手,在使用pandas_ta扩展将一些技术指标应用于股票信息的数据框架时遇到了一些问题。原始数据帧“nonStockdf”由列构成

['index', 'date', 'ticker', 'adj_close', 'close', 'open', 'high', 'low',
       'volume', 'EMA_9', 'EMA_50', 'EMA_200', 'RSI_14', 'MACD_12_26_9',
       'MACDH_12_26_9', 'MACDS_12_26_9'],
      dtype='object')
并拥有5年前约50只股票、指数和期货的历史数据。我试图将一些技术指标作为新列应用到现有数据框中,并保存在名为
nonStockTechsdf
的新数据框中,但不断获取
索引器。错误:单位置索引器超出范围。有人能帮忙吗??我的代码如下。提前谢谢

ETF_Daily = ['SPY', 'DIA', 'QQQ', 'IWM', 'VXX', 'UVXY', 'EWZ', 'FXI', 'USO', 'HYG', 'EWJ', 'TLT', 'SLV', 'GLD', 'LQD', 'UNG', 'EWH', 'VGK', 'FEZ', 'TBT', 'EWW', 'EWC', 'EMB', 'UUP', 'GDX', 'GDXJ', 'IBB', 'ITB', 'IYE', 'IYR', 'KBE', 'KRE', 'OIH', 'SMH', 'VNQ', 'XHB', 'XLB', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLU', 'XLV', 'XLY', 'XME', 'XOP', 'XRT', 'XTL', 'TBT', 'DBC', '^GSPC', '^DJI', '^IXIC', '^NYA', '^XAX', '^RUT', '^VIX', '^FTSE', '^GDAXI', '^FCHI', '^N100', '^N225', 'GC=F', 'SI=F','HG=F', 'CL=F', 'BZ=F', 'NG=F', 'ZC=F', 'ZO=F', 'KE=F', 'ZR=F', 'ZS=F', 'GF=F', 'HE=F', 'LE=F', 'CC=F', 'KC=F', 'CT=F', 'LB=F', 'OJ=F', 'SB=F', 'AW=F', 'DX=F', 'BTCUSD=X', 'ETHUSD=X', 'EURUSD=X', 'JPY=X', 'GBPUSD=X', 'AUDUSD=X', 'NZDUSD=X', 'CNY=X', 'HKD=X', 'SGD=X', 'INR=X', 'MXN=X', 'PHP=X', 'IDR=X', 'THB=X', 'MYR=X', 'ZAR=X', 'RUB=X']

nonStockTechsdf = pd.DataFrame()

for i in ETF_Daily:
    df = nonStockdf.loc[nonStockdf['ticker'] == i]
    df.ta.ema('close', length=9, append=True)
    df.ta.ema('close', length=50, append=True)
    df.ta.ema('close',length=200, append=True)
    df.ta.rsi('close',n=14, append=True)
    df.ta.macd('close',slow=26, fast=12, sign=9, append=True)
    nonStockTechsdf = nonStockTechsdf.append(df)

我能弄明白。我得到了索引器:由于df.ta.ema('close',length=200,append=True)行,单位置索引器超出了范围。该行计算200天指数移动平均值,因此,数据框中每个股票至少需要200天的数据才能正确计算。它用不到200天的数据击中的第一只股票引发了这一错误。我通过添加这样的IF语句来解决这个问题:我能够找到答案。我得到了索引器:由于df.ta.ema('close',length=200,append=True)行,单位置索引器超出了范围。该行计算200天指数移动平均值,因此,数据框中每个股票至少需要200天的数据才能正确计算。它用不到200天的数据击中的第一只股票引发了这一错误。我通过添加一个IF语句修复了这个问题,如下所示: