【问题标题】:How to overcome an error from missing data in a DataReader Iterrows loop?如何克服 DataReader Iterrows 循环中缺少数据的错误?
【发布时间】:2019-10-13 09:07:03
【问题描述】:

我正在尝试使用 pandas DataReader 从 Yahoo Finance 提取 500 只股票的历史股价。我的代码可以在有限的情况下工作,但我遇到了一些股票代码问题,由于某种原因,雅虎财经不支持这些代码,因此我可以提取它们的数据。

“无数据”使我的代码停止工作。我想创建具有强大通用应用程序的代码,以便在数据可用时工作,如果没有,则只需填写“NaN”。我确信这是直截了当的,但我无法理解它。

我尝试使用ifelse 条件解决问题,但无论我尝试什么都行不通,只是想不通。

style.use('ggplot')

start = dt.datetime(2000,1,1)
end = dt.datetime(2019,5,26)

data = pd.DataFrame([])

for index, row in tickers.iterrows():

    #if web.DataReader(row['ticker'] , 'yahoo').any():
    df = web.DataReader(row['ticker'] , 'yahoo', start, end)
    df['ticker'] = str(row['ticker'])
    data = data.append(df)

    #else:
      #  df = 'Nan'
        #df['ticker'] = str(row['ticker'])

print(data.head())

我想为我已导入股票代码的给定股票代码列表创建所有历史股票价格的 DataFrame。

【问题讨论】:

    标签: python-3.x pandas loops pandas-datareader


    【解决方案1】:

    使用.dropna(),或者.fillna()

    【讨论】:

    • 谢谢。我不认为这很简单,因为我没有使用现有的数据文件,我使用 Pandas DataReader 直接从 Yahoo Finance 提取数据,它适用于大多数股票代码,但不是全部。 Yahoo Finance 中缺少一些代码,这会导致这些缺失代码出现“RemoteDataError”。从雅虎提取数据时,我试图循环/忽略任何丢失的股票代码。我收到的错误消息是(第一个缺少的代码是“AET”,如下所示):RemoteDataError: No data fetched for symbol AET using YahooDailyReader
    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 2013-06-19
    • 2019-12-30
    • 2019-12-21
    • 1970-01-01
    • 2010-09-12
    • 2015-03-13
    • 2013-10-07
    相关资源
    最近更新 更多