Skip to content

Regression in s.loc._getitem_iterable(...) #16920

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
toobaz opened this issue Jul 14, 2017 · 3 comments
Closed

Regression in s.loc._getitem_iterable(...) #16920

toobaz opened this issue Jul 14, 2017 · 3 comments
Labels
Bug Indexing Related to indexing on series/frames, not to indexes themselves Regression Functionality that used to work in a prior pandas version

Comments

@toobaz
Copy link
Member

toobaz commented Jul 14, 2017

Code Sample, a copy-pastable example if possible

In [2]: s = pd.Series(range(9), index=pd.MultiIndex.from_product([['A', 'B', 'C'], ['foo', 'bar', 'baz']],names=['one', 'two']))

In [3]: s.loc._getitem_iterable(['A', 'E'], 0)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-3-62e87e14f902> in <module>()
----> 1 s.loc._getitem_iterable(['A', 'E'])

/home/pietro/nobackup/repo/pandas/pandas/core/indexing.py in _getitem_iterable(self, key, axis)
   1095             # if it cannot handle; we only act on all found values
   1096             indexer, keyarr = labels._convert_listlike_indexer(
-> 1097                 key, kind=self.name)
   1098             if indexer is not None and (indexer != -1).all():
   1099                 return self.obj.take(indexer, axis=axis)

/home/pietro/nobackup/repo/pandas/pandas/core/indexes/multi.py in _convert_listlike_indexer(self, keyarr, kind)
   1760             mask = check == -1
   1761             if mask.any():
-> 1762                 raise KeyError('%s not in index' % keyarr[mask])
   1763 
   1764         return indexer, keyarr

KeyError: "['E'] not in index"

Problem description

(Unless/until we change our general approach to this - related discussion is in #15747,) indexing with a list containing at least one valid key should not raise an error. Indeed, before 05d70f4 ,

In [2]: s = pd.Series(range(9), index=pd.MultiIndex.from_product([['A', 'B', 'C'], ['foo', 'bar', 'baz']],names=['one', 'two']))

In [3]: s.loc._getitem_iterable(['A', 'E'])
Out[3]: 
one  two
A    foo    0
     bar    1
     baz    2
dtype: int64

Expected Output

See above. This had already been reported here, opening an independent issue for clarity, as suggested by @gfyoung .

Output of pd.show_versions()

INSTALLED VERSIONS ------------------ commit: None python: 3.5.3.final.0 python-bits: 64 OS: Linux OS-release: 4.9.0-3-amd64 machine: x86_64 processor: byteorder: little LC_ALL: None LANG: it_IT.UTF-8 LOCALE: it_IT.UTF-8

pandas: 0.21.0.dev+231.g03cec7563
pytest: 3.0.6
pip: 9.0.1
setuptools: None
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
xarray: None
IPython: 5.1.0.dev
sphinx: 1.5.6
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.3.0
numexpr: 2.6.1
feather: 0.3.1
matplotlib: 2.0.2
openpyxl: None
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.6
lxml: None
bs4: 4.5.3
html5lib: 0.999999999
sqlalchemy: 1.0.15
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
pandas_gbq: None
pandas_datareader: 0.2.1

@toobaz toobaz mentioned this issue Jul 14, 2017
4 tasks
@toobaz
Copy link
Member Author

toobaz commented Jul 14, 2017

For reference: although I cannot currently think of any code exposing the bug using only public methods, this is what makes PR #15615 fail tests.

@gfyoung gfyoung added Indexing Related to indexing on series/frames, not to indexes themselves Regression Functionality that used to work in a prior pandas version labels Jul 14, 2017
@gfyoung
Copy link
Member

gfyoung commented Jul 14, 2017

cc @jreback (that was your commit AFAICT)

@gfyoung gfyoung modified the milestone: No action Jul 14, 2017
@mroeschke mroeschke added the Bug label May 11, 2020
@phofl
Copy link
Member

phofl commented Nov 14, 2020

This is now the expected behavior

@phofl phofl closed this as completed Nov 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Indexing Related to indexing on series/frames, not to indexes themselves Regression Functionality that used to work in a prior pandas version
Projects
None yet
Development

No branches or pull requests

4 participants