Ошибка при попытке скачать несколько данных

При попытке скачать котировки акций из списка txt, возникает ошибка:

AttributeError: 'DataFrame' object has no attribute 'minor_axis'

Как исправить правильно?

Файл к которому обращение происходит - просто .txt с записью:

GM
F
AAPL
import pandas as pd
import pandas_datareader.data as wb

tickers_fn = r'C:/Python/1.txt'
with open(tickers_fn) as f:
    stocklist = f.read().splitlines()

p = wb.DataReader(stocklist, 'yahoo', '2019-01-01')

# show Panel axes...
#print(p.axes)

for ticker in p.minor_axis:
    p.loc[:, :, ticker].dropna().to_csv('C:/Python/{}_data.csv'.format(ticker))

Ответы (1 шт):

Автор решения: MaxU

Очевидно вы воспользовались кодом, который работал для достаточно старых версий pandas и pandas-datareader и который не работает сейчас, потому, что в старых версиях указанных библиотек использовался тип данных pandas.Panel, преднанзначенный для хранения 3D данных. В более поздних версиях Pandas разработчики решили отказаться от его поддержки и в современных версиях Pandas этого типа данных нет. Соответственно разработчики pandas-datareader вынуждены были изменить свою библиотеку, чтобы не использовать более не поддерживаемый тип данных. Теперь вместо использования устаревшего 3D Panel, в pandas-datareader используют pandas.DataFrame с multi-level columns.

Для современных версий pandas и pandas-datareader можно сделать так:

import pandas as pd
import pandas_datareader.data as wb

p = wb.DataReader(stocklist, 'yahoo', '2019-01-01').swaplevel(axis=1)
for name in p.columns.get_level_values(0).unique():
    p[name].to_csv(fr"c:/temp/data_{name}.csv")
→ Ссылка