module 'pandas_datareader.data' has no attribute 'get_components'
时间: 2023-08-08 16:10:03 浏览: 135
非常抱歉,`pandas_datareader`中的`get_components`函数已经被弃用。可以使用`pandas_datareader.wb`模块中的`get_components()`函数来获取欧洲斯托克50指数的全部股票的股票代码。
以下是修改后的代码:
```python
import pandas_datareader.data as web
import pandas_datareader.wb as wb
import pandas as pd
# 指定起始日期和结束日期
start_date = '2021-01-01'
end_date = '2021-12-31'
# 欧洲斯托克50指数的代码为STOXX50E
index_code = 'STOXX50E'
# 获取欧洲斯托克50指数的全部股票的股票代码
stock_codes = wb.get_components(index_code)
# 获取每个股票的历史数据
df_list = []
for code in stock_codes['Code']:
try:
df = web.DataReader(code, 'yahoo', start_date, end_date)
df['Code'] = code
df_list.append(df)
except:
pass
# 将数据合并
df_total = pd.concat(df_list, axis=0, ignore_index=False)
# 将数据保存到csv文件中
df_total.to_csv('stock_data.csv')
```
说明:
1. 在`pandas_datareader`中,获取股票代码的函数已经被移动到了`pandas_datareader.wb`模块中的`get_components()`函数。
2. 欧洲斯托克50指数的代码为`STOXX50E`,不需要添加`^`前缀。
3. 在循环中,要获取股票代码,应该使用`stock_codes['Code']`,而不是`stock_codes.index`。
4. 其他部分与之前的代码相同。
阅读全文