Вы можете сначала напечатать объект ibm, чтобы увидеть структуру данных, которую он возвращает.Это вложенный словарь, а не фрейм данных.
import pandas_datareader as pdr
from datetime import datetime
ibm = pdr.get_data_yahoo(symbols='ibm', start=datetime(2018, 1, 1), end=datetime(2019,4,28))
type(ibm)
dict
Вы можете получить доступ к Adj Close во вложенном диктовке и записать данные в csv.
ibm['prices']['Adj Close'].to_csv('ibm.csv', header = True)
Если вы прочитаете ibm.csv, вы получите
df = pd.read_csv('ibm.csv')
Date Adj Close
0 2018-01-02 145.875259
1 2018-01-03 149.885071
2 2018-01-04 152.920776
3 2018-01-05 153.667892
4 2018-01-08 154.594681