Discussion about this post

User's avatar
Srijita Roy's avatar

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."

Expand full comment
1 more comment...

No posts