0

I've used lifelines a lot, but when I'm re-running old code that previously worked fine I get the following error: KeyError: "None of [Index(['At risk', 'Censored', 'Events'], dtype='object')] are in the [index]"

I'm guessing there has been some changes to the code when displaying at risk counts, but I can't find any evidence of it in the lifelines documentation. I am using version 27.0

Snippet of the table with data

index t2p O
1 354 False
2 113 False
3 1222 False
4 13 True
5 59 False
6 572 False

Code:

ax = plt.subplot(111)
m = KaplanMeierFitter()

ax = m.fit(h.t2p, h.O, label='PPI').plot_cumulative_density(ax=ax,ci_show=False)

add_at_risk_counts(m)

Full error:

KeyError                                  Traceback (most recent call last)
<ipython-input-96-a8ce3ea9e60c> in <module>
      4 ax = m.fit(h.t2p, h.O, label='PPI').plot_cumulative_density(ax=ax,ci_show=False)
      5 
----> 6 add_at_risk_counts(m)
      7 
      8 

~\AppData\Local\Continuum\anaconda3\lib\site-packages\lifelines\plotting.py in add_at_risk_counts(labels, rows_to_show, ypos, xticks, ax, at_risk_count_from_start_of_period, *fitters, **kwargs)
    510                 .rename({"at_risk": "At risk", "censored": "Censored", "observed": "Events"})
    511             )
--> 512             counts.extend([int(c) for c in event_table_slice.loc[rows_to_show]])
    513 
    514         if n_rows > 1:

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexing.py in __getitem__(self, key)
   1766 
   1767             maybe_callable = com.apply_if_callable(key, self.obj)
-> 1768             return self._getitem_axis(maybe_callable, axis=axis)
   1769 
   1770     def _is_scalar_access(self, key: Tuple):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexing.py in _getitem_axis(self, key, axis)
   1952                     raise ValueError("Cannot index with multidimensional key")
   1953 
-> 1954                 return self._getitem_iterable(key, axis=axis)
   1955 
   1956             # nested tuple slicing

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexing.py in _getitem_iterable(self, key, axis)
   1593         else:
   1594             # A collection of keys
-> 1595             keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
   1596             return self.obj._reindex_with_indexers(
   1597                 {axis: [keyarr, indexer]}, copy=True, allow_dups=True

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexing.py in _get_listlike_indexer(self, key, axis, raise_missing)
   1551 
   1552         self._validate_read_indexer(
-> 1553             keyarr, indexer, o._get_axis_number(axis), raise_missing=raise_missing
   1554         )
   1555         return keyarr, indexer

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing)
   1638             if missing == len(indexer):
   1639                 axis_name = self.obj._get_axis_name(axis)
-> 1640                 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
   1641 
   1642             # We (temporarily) allow for some missing keys with .loc, except in

KeyError: "None of [Index(['At risk', 'Censored', 'Events'], dtype='object')] are in the [index]"
Sandus
  • 23
  • 6
  • Can you confirm your lifelines version with `print(lifelines.__version__)`? – Cam.Davidson.Pilon Jun 04 '22 at 17:43
  • Hi Cam! Thanks for responding. I can confirm that I'm using version 0.27.0. I've also tried to uninstall and install lifelines (I have not tried to reinstall all of anaconda). Furthermore I've tried to run the example from https://lifelines.readthedocs.io/en/latest/Examples.html#displaying-multiple-at-risk-counts-below-plots, but I still get the same error message – Sandus Jun 07 '22 at 11:52
  • 1
    My next guess would be that it's a lifelines & pandas issue. What version of Pandas do you have? Can you use debugging tools (like `pdb`, or `%debug` in ipython) to narrow down the error? – Cam.Davidson.Pilon Jun 07 '22 at 15:26
  • 1
    It was the Pandas version that was the problem! Everything works now. Thank you very much! I also want to thank you for lifelines, I've been using it a lot and find it great – Sandus Jun 09 '22 at 12:23

0 Answers0