Empowering DIY Investors with Flexible Market Analysis Tools
I am getting and adjacent close error. Can you share a modified code?
KeyError Traceback (most recent call last)
File ~/miniconda3/lib/python3.12/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:
Cell In[23], line 24, in RRGPlotter.load_data(self)
23 try:
---> 24 self.tickers_data = raw_data.xs('Adj Close', axis=1, level=0)
25 except KeyError:
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/generic.py:4274, in NDFrame.xs(self, key, axis, level, drop_level)
4273 raise TypeError("Index must be a MultiIndex")
-> 4274 loc, new_ax = labels.get_loc_level(key, level=level, drop_level=drop_level)
4276 # create the tuple of the indexer
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:3150, in MultiIndex.get_loc_level(self, key, level, drop_level)
3148 level = [self._get_level_number(lev) for lev in level]
-> 3150 loc, mi = self._get_loc_level(key, level=level)
3151 if not drop_level:
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:3290, in MultiIndex._get_loc_level(self, key, level)
3289 else:
-> 3290 indexer = self._get_level_indexer(key, level=level)
3291 if (
3292 isinstance(key, str)
3293 and self.levels[level]._supports_partial_string_indexing
3294 ):
3295 # check to see if we did an exact lookup vs sliced
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:3391, in MultiIndex._get_level_indexer(self, key, level, indexer)
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
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:2980, in MultiIndex._get_loc_single_level_index(self, level_index, key)
2979 else:
-> 2980 return level_index.get_loc(key)
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/base.py:3812, in Index.get_loc(self, key)
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.
During handling of the above exception, another exception occurred:
Cell In[24], line 25
22 continue
24 if __name__ == "__main__":
---> 25 main()
Cell In[24], line 3, in main()
1 def main():
2 benchmark, tickers, period, window, tail = get_user_input()
----> 3 rrg_plotter = RRGPlotter(benchmark, tickers, period, window, tail)
5 rrg_plotter.create_plot()
7 print(f"\n{'Ticker':<15}{'Name':<30}{'Price':<10}{'Change (%)':<12}{'Status'}")
Cell In[23], line 12, in RRGPlotter.__init__(self, benchmark, tickers, period, window, tail)
9 self.rsr_tickers = {}
10 self.rsm_tickers = {}
---> 12 self.load_data()
13 self.calculate_rrg()
14 self.create_plot()
Cell In[23], line 26, in RRGPlotter.load_data(self)
24 self.tickers_data = raw_data.xs('Adj Close', axis=1, level=0)
---> 26 raise KeyError("Could not find 'Adj Close' in downloaded multi-index data.")
27 else:
28 try:
KeyError: "Could not find 'Adj Close' in downloaded multi-index data."
Hi Srijita,
Please replace 'Adj Close' with 'Close' in the code at all places
It should work.
I am getting and adjacent close error. Can you share a modified code?
KeyError Traceback (most recent call last)
File ~/miniconda3/lib/python3.12/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)
Cell In[23], line 24, in RRGPlotter.load_data(self)
23 try:
---> 24 self.tickers_data = raw_data.xs('Adj Close', axis=1, level=0)
25 except KeyError:
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/generic.py:4274, in NDFrame.xs(self, key, axis, level, drop_level)
4273 raise TypeError("Index must be a MultiIndex")
-> 4274 loc, new_ax = labels.get_loc_level(key, level=level, drop_level=drop_level)
4276 # create the tuple of the indexer
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:3150, in MultiIndex.get_loc_level(self, key, level, drop_level)
3148 level = [self._get_level_number(lev) for lev in level]
-> 3150 loc, mi = self._get_loc_level(key, level=level)
3151 if not drop_level:
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:3290, in MultiIndex._get_loc_level(self, key, level)
3289 else:
-> 3290 indexer = self._get_level_indexer(key, level=level)
3291 if (
3292 isinstance(key, str)
3293 and self.levels[level]._supports_partial_string_indexing
3294 ):
3295 # check to see if we did an exact lookup vs sliced
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:3391, in MultiIndex._get_level_indexer(self, key, level, indexer)
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
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/multi.py:2980, in MultiIndex._get_loc_single_level_index(self, level_index, key)
2979 else:
-> 2980 return level_index.get_loc(key)
File ~/miniconda3/lib/python3.12/site-packages/pandas/core/indexes/base.py:3812, in Index.get_loc(self, key)
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.
KeyError: 'Adj Close'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
Cell In[24], line 25
22 continue
24 if __name__ == "__main__":
---> 25 main()
Cell In[24], line 3, in main()
1 def main():
2 benchmark, tickers, period, window, tail = get_user_input()
----> 3 rrg_plotter = RRGPlotter(benchmark, tickers, period, window, tail)
5 rrg_plotter.create_plot()
7 print(f"\n{'Ticker':<15}{'Name':<30}{'Price':<10}{'Change (%)':<12}{'Status'}")
Cell In[23], line 12, in RRGPlotter.__init__(self, benchmark, tickers, period, window, tail)
9 self.rsr_tickers = {}
10 self.rsm_tickers = {}
---> 12 self.load_data()
13 self.calculate_rrg()
14 self.create_plot()
Cell In[23], line 26, in RRGPlotter.load_data(self)
24 self.tickers_data = raw_data.xs('Adj Close', axis=1, level=0)
25 except KeyError:
---> 26 raise KeyError("Could not find 'Adj Close' in downloaded multi-index data.")
27 else:
28 try:
KeyError: "Could not find 'Adj Close' in downloaded multi-index data."
Hi Srijita,
Please replace 'Adj Close' with 'Close' in the code at all places
It should work.