Skip to content

df.xs() level argument behavior changed. #1796

@lodagro

Description

@lodagro

When using xs in combination with a MultiIndex, before it was not needed to specify the level argument if key started from level 0 and referred to consecutive levels (see also the examples described in #1684), now this no longer works and level needs to be defined in case key is a list.

In [74]: df
Out[74]: 
                       A         B         C         D
lvl0 lvl1 lvl2                                        
foo  one  -1   -0.945315  0.355323 -1.292034 -0.241153
           1   -0.798705 -0.155502  0.269164  2.659962
     two  -1    1.059727 -1.624291 -0.199047 -1.080560
           1    0.937473 -0.726302  0.848377  0.450377
bar  one  -1    0.473692  0.135078  0.066102 -0.922182
           1   -0.059887  0.306716  1.933680 -1.314217
     two  -1   -0.182526 -0.074111 -1.305636 -0.404485
           1   -0.913486  1.758551  0.575856  0.560052

In [75]: df.xs(['foo', 'one'])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-75-deeb03cdd75e> in <module>()
----> 1 df.xs(['foo', 'one'])
...
TypeError: 

In [76]: df.xs(['foo', 'one'], level=[0, 1])
Out[76]: 
             A         B         C         D
lvl2                                        
-1   -0.945315  0.355323 -1.292034 -0.241153
 1   -0.798705 -0.155502  0.269164  2.659962

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions