Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 试图使用stockstats计算rsi,得到错误“;TypeError:列表索引必须是整数或片,而不是str";_Python - Fatal编程技术网

Python 试图使用stockstats计算rsi,得到错误“;TypeError:列表索引必须是整数或片,而不是str";

Python 试图使用stockstats计算rsi,得到错误“;TypeError:列表索引必须是整数或片,而不是str";,python,Python,我在试着计算一组测试数据的rsi。 我就是这么做的 创建测试数据的数据框 df=pd.DataFrame(数据,列=['Date'、'Open'、'High'、'Low'、'Close'、'Volume'、'adj Close']) 使数据帧成为webstate帧 stock\u df=Sdf.重新键入(df) 校准rsdata['rsi']=stock_df['rsi_14'] 完整的错误消息和代码 “C:\Users\tpottel\programming\java\eclipse proj

我在试着计算一组测试数据的rsi。 我就是这么做的

  • 创建测试数据的数据框

    df=pd.DataFrame(数据,列=['Date'、'Open'、'High'、'Low'、'Close'、'Volume'、'adj Close'])

  • 使数据帧成为webstate帧

    stock\u df=Sdf.重新键入(df)

  • 校准
    rsdata['rsi']=stock_df['rsi_14']

  • 完整的错误消息和代码 “C:\Users\tpottel\programming\java\eclipse projects\BBitBotCoinUsing2\pythonpro\venv\Scripts\python.exe”“C:/Users/tpottel/programming/java/eclipse projects/BBitBotCoinUsing2/pythonpro/webstats/webstats.py” C:\Users\tpottel\programming\java\eclipse projects\BBitBotCoinUsing2\pythonpro\venv\lib\site packages\pandas\core\index.py:189:SettingWithCopyWarning: 试图在数据帧切片的副本上设置值

    请参阅文档中的注意事项: self.\u setitem\u和索引器(索引器,值)

    (互联网上的示例代码) 代码:

    库存_df=Sdf.重新键入(df)
    df['rsi']=股票df['rsi_14']

    数据是一个列表。你认为
    数据['rsi']
    应该做什么?在你的整个代码中甚至没有
    'rsi_14'
    这样的东西。此外,数据是一个列表,而不是一个数据框架。我把它改成了stock_df=Sdf。在样本代码中,他们使用代表相对强度指数的rsi_14,重新键入(df)df['rsi']=stock_df['rsi_14']
    import pandas as pd
    import stockstats as st
    from stockstats import StockDataFrame as Sdf
    #from pandas.io import data, wb # becomes
    #from pandas_datareader import data, wb
    
    data=[[567, 700, 650, 710, 760, 1, 670]]
    
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    data.append([567, 700, 650, 710, 760, 1, 670])
    
    df = pd.DataFrame(data,columns=['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'adj close'])