-
-
Notifications
You must be signed in to change notification settings - Fork 18.5k
Incoherent behavior when ambiguously indexing MultiIndexed DataFrame with slice or list #16396
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
Comments
The problem is not limited to slices: In [2]: df = pd.DataFrame(index=pd.MultiIndex.from_product([[1,2], [3, 4], [5, 6]]), columns=['a', 'b'])
In [3]: df.loc[1, 3] # good
Out[3]:
a b
5 NaN NaN
6 NaN NaN
In [4]: df.loc[1, [3,4]]
---------------------------------------------------------------------------
[...]
KeyError: 'None of [[3, 4]] are in the [columns]'
In [5]: df.loc[[1,2], [3]]
---------------------------------------------------------------------------
[...]
KeyError: 'None of [[3]] are in the [columns]'
In [6]: df.loc[[1,2], 3]
---------------------------------------------------------------------------
[...]
TypeError: cannot do label indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [3] of <class 'int'> Retitling accordingly |
when only scalars are passed this is ambiguous because of |
Can you explain this in a bit more detail? |
Sorry in advance if this is already discussed/reported - I searched in the archive, but didn't know exactly what to search.
Code Sample, a copy-pastable example if possible
Problem description
.loc[l1, l2]
called on aMultiIndex
edDataFrame
is ambiguous:l2
could refer to the second level of theindex
, or to thecolumns
. Apparently, the decision has been taken to follow the first interpretation, and it is fine. But then, the same must happen whenl1
andl2
are slices.I can understand that
In [6]
might "look different" fromIn [4]
: butIn [4]
andIn [5]
should really give the same result (and henceIn [6]
too).Expected Output
Out [4]
in all three cases (orOut [6]
if we prefer to favour the second interpretation - which however would probably be more disruptive).Output of
pd.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.5.3.final.0
python-bits: 64
OS: Linux
OS-release: 4.7.0-1-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: it_IT.utf8
LOCALE: it_IT.UTF-8
pandas: 0.20.1
pytest: 3.0.6
pip: 9.0.1
setuptools: None
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
xarray: 0.9.2
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: 2.3.0
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.6
lxml: 3.7.1
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
The text was updated successfully, but these errors were encountered: