import yfinance as yf import pandas as pd from pandas_datareader import data as pdt import datetime as dt import numpy as np from scipy.optimize import minimize end_date = dt.datetime.now() start_date = end_date - dt.timedelta(days=365*5) tickers = ['SPY', 'QQQ', 'GLD', 'VTI', 'BND'] adj_close_df = pd.DataFrame() for ticker in tickers: data = yf.download(ticker, start = start_date, end = end_date) adj_close_df[ticker] = data['Adj Close'] print(adj_close_df) and below is the result when it seems spyder cant get what I need : %runcell -i 0 C:/Users/User/Downloads/untitled0.py [*********************100%***********************] 1 of 1 completed --------------------------------------------------------------------------- KeyError Traceback (most recent call last) File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\indexes\base.py:3805, in Index.get_loc(self, key) 3804 try: -> 3805 return self._engine.get_loc(casted_key) 3806 except KeyError as err: File index.pyx:167, in pandas._libs.index.IndexEngine.get_loc() File index.pyx:196, in pandas._libs.index.IndexEngine.get_loc() File pandas\\_libs\\hashtable_class_helper.pxi:7081, in pandas._libs.hashtable.PyObjectHashTable.get_item() File pandas\\_libs\\hashtable_class_helper.pxi:7089, in pandas._libs.hashtable.PyObjectHashTable.get_item() KeyError: 'Adj Close' The above exception was the direct cause of the following exception: KeyError Traceback (most recent call last) File c:\users\user\downloads\untitled0.py:16 14 for ticker in tickers: 15 data = yf.download(ticker, start = start_date, end = end_date) ---> 16 adj_close_df[ticker] = data['Adj Close'] 18 print(adj_close_df) File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\frame.py:4101, in DataFrame.__getitem__(self, key) 4099 if is_single_key: 4100 if self.columns.nlevels > 1: -> 4101 return self._getitem_multilevel(key) 4102 indexer = self.columns.get_loc(key) 4103 if is_integer(indexer): File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\frame.py:4159, in DataFrame._getitem_multilevel(self, key) 4157 def _getitem_multilevel(self, key): 4158 # self.columns is a MultiIndex -> 4159 loc = self.columns.get_loc(key) 4160 if isinstance(loc, (slice, np.ndarray)): 4161 new_columns = self.columns[loc] File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\indexes\multi.py:3040, in MultiIndex.get_loc(self, key) 3037 return mask 3039 if not isinstance(key, tuple): -> 3040 loc = self._get_level_indexer(key, level=0) 3041 return _maybe_to_slice(loc) 3043 keylen = len(key) File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\indexes\multi.py:3391, in MultiIndex._get_level_indexer(self, key, level, indexer) 3388 return slice(i, j, step) 3390 else: -> 3391 idx = self._get_loc_single_level_index(level_index, key) 3393 if level > 0 or self._lexsort_depth == 0: 3394 # Desired level is not sorted 3395 if isinstance(idx, slice): 3396 # test_get_loc_partial_timestamp_multiindex File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\indexes\multi.py:2980, in MultiIndex._get_loc_single_level_index(self, level_index, key) 2978 return -1 2979 else: -> 2980 return level_index.get_loc(key) File ~\AppData\Local\spyder-6\envs\spyder-runtime\Lib\site-packages\pandas\core\indexes\base.py:3812, in Index.get_loc(self, key) 3807 if isinstance(casted_key, slice) or ( 3808 isinstance(casted_key, abc.Iterable) 3809 and any(isinstance(x, slice) for x in casted_key) 3810 ): 3811 raise InvalidIndexError(key) -> 3812 raise KeyError(key) from err 3813 except TypeError: 3814 # If we have a listlike key, _check_indexing_error will raise 3815 # InvalidIndexError. Otherwise we fall through and re-raise 3816 # the TypeError. 3817 self._check_indexing_error(key) KeyError: 'Adj Close' enter image description here I am trying to download historical stock data for several tickers using the yfinance library in Python. but, I get an error when trying to get the 'Adj Close' column of the downloaded data. Here is the code I am using above : Continue reading...