熊猫找不到列,ValueError

时间:2020-01-13 18:13:40

标签: python pandas alphavantage

import {
  LOGIN_STARTED,
  LOGIN_SUCCESS,
  LOGIN_FAILURE,
} from '../actions/types.js';


const initialstate = {
  access: undefined,
  refresh: undefined,
  error: {}
}

export default function(state=initialstate, action){
  switch (action.type) {
    case LOGIN_SUCCESS:
      return {
        ...state,
        access: action.type.access_token,
        refresh: action.type.refresh_token,
      }
    case LOGIN_FAILURE:
      return {
        ...state,
        error: action.payload.error
      }
    default:
      return state;
  }
}

它读取错误“ ValueError:Usecols与列不匹配,预期但未找到列:['timestamp','adjusted_close']“

但是,我检查了代码将检索的所有文件,并且它们都有各自的列。对于我弄错地方的任何澄清将不胜感激。

2 个答案:

答案 0 :(得分:0)

您正在使用标准密钥来达到API限制。标准密钥允许每分钟5个API调用和每天500个API调用,因此有时会起作用。

您会看到,如果将URL粘贴到浏览器中并在60秒内刷新5到10次,您将手动达到限制。

您可以:

  1. 升级到premium key.
  2. 释放您的API调用(等待60 运行此命令后几秒钟再次运行)

关于隐私的注释,也可能与您达到API阈值有关。您已公开共享API密钥。

  1. 将您的API密钥放在环境变量中
  2. 发布时,请使用“ XXXX”或其他可能会影响API的密钥代替。

如果您公开共享API密钥,则其他人可以使用它,这意味着其他人可能每分钟使用您的5个API调用。

示例:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os

symbols = ["AAPL", "GLD", "TSLA", "GBL", "GOOGL"]


def compare_security(symbols):
    start_date = "01-01-2019"
    end_date = "01-12-2020"
    dates = pd.date_range(start_date, end_date)

    df1 = pd.DataFrame(index=dates)
    df_SPY = pd.read_csv(
        "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=SPY&apikey={}&datatype=csv".format(
            os.getenv("ALPHAVANTAGE_API_KEY")),
        index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
    df_SPY = df_SPY.rename(columns={"adjusted_close": "SPY"})
    df1 = df1.join(df_SPY, how="inner")

    for symbol in symbols:

        df_temp = pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey={}&datatype=csv".format(symbol, os.getenv("ALPHAVANTAGE_API_KEY")),
                              index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
        df_temp = df_temp.rename(columns={"adjusted_close": symbol})
        df1 = df1.join(df_temp)
    return df1


def test_run():
    df = compare_security(symbols)
    print(df)
    df.plot()
    plt.title(symbols)
    plt.show()


if __name__ == "__main__":
    test_run()

答案 1 :(得分:-1)

请在IDLE中运行以下命令,您会发现parse_dates = True是罪魁祸首。为什么这样做呢?我不知道,但至少您现在知道导致错误的原因。

for symbol in symbols:
    df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XX3U125BWQLTU2VZ&datatype=csv".format(symbol))
    print(df_temp.columns)

for symbol in symbols:
    df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XX3U125BWQLTU2VZ&datatype=csv".format(symbol), parse_dates=True)
    print(df_temp.columns)