我想创建一个简单的脚本,用panda_datareader包从雅虎财经拉股票数据:
from pandas_datareader import data
stocks = data.DataReader('MSFT', 'yahoo', start='2020-01-14', end='2023-01-14')
但代码会显示“字符串索引必须为整数”的TypeError消息
TypeError Traceback (most recent call last)
Cell In[1], line 3
1 from pandas_datareader import data
----> 3 stocks = data.DataReader('MSFT', 'yahoo', start='2020-01-14', end='2023-01-14')
File c:\Users\der_L\anaconda3\envs\py39\lib\site-packages\pandas\util\_decorators.py:211, in deprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper(*args, **kwargs)
209 else:
210 kwargs[new_arg_name] = new_arg_value
--> 211 return func(*args, **kwargs)
File c:\Users\der_L\anaconda3\envs\py39\lib\site-packages\pandas_datareader\data.py:379, in DataReader(name, data_source, start, end, retry_count, pause, session, api_key)
367 raise NotImplementedError(msg)
369 if data_source == "yahoo":
370 return YahooDailyReader(
371 symbols=name,
372 start=start,
373 end=end,
374 adjust_price=False,
375 chunksize=25,
376 retry_count=retry_count,
377 pause=pause,
378 session=session,
--> 379 ).read()
381 elif data_source == "iex":
...
--> 153 data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
154 except KeyError:
155 msg = "No data fetched for symbol {} using {}"
TypeError: string indices must be integers
这个脚本和网上看到的几乎一样,但我不明白它有什么问题。
2条答案
按热度按时间goqiplq21#
开始日期和结束日期使用字符串。请用途:
然后在DataReader调用中使用这些参数
rkttyhzu2#
看起来pandas-datareader上有一个尚未更新的更改。错误报告可以在here中找到。作为一种解决方案,您可以使用yfinance包,如下所示。要使其正常工作,您应该使用
pip install yfinance
安装yfinance包。然后,下面修改的代码应该设置一切进行.