-
- Notifications
You must be signed in to change notification settings - Fork 19.2k
Description
When I try to slice a multi indexed data frame, the slice interval is ignored for all the entries of the first level index except the last one. This only happens if the length of the slice is beyond a particular value (around 30 in the cases that I observed, but it is not the same across data frames).
This bug seems to have been introduced in version 0.17.1 as this works fine in version 0.16.4
Code Sample
import pandas as pd import numpy as np freq = ['a', 'b', 'c', 'd'] idx = pd.MultiIndex.from_product([freq, np.arange(500)]) dfmi = pd.DataFrame(np.random.randn(2000), index=idx, columns=['Test']) sliced_df = dfmi.loc[pd.IndexSlice[:, 30:70], :] print sliced_df.loc['a'] print sliced_df.loc['d']Current Output
Test 0 -2.288252 1 0.501113 2 -0.581190 3 0.366600 .. ... 496 -1.124694 497 -0.106180 498 -0.348668 499 0.659645 [500 rows x 1 columns] Test 30 0.079055 31 2.455371 32 0.014673 33 0.966548 .. ... 67 0.997713 68 1.235465 69 -0.320166 70 -0.968143 Expected Output
Test 30 -1.025443 31 -1.305710 32 0.614858 33 -0.606788 34 -0.673230 .. ... 68 -1.129218 69 -1.747830 70 -0.611186 Test 30 -0.679267 31 -0.590352 32 1.000755 33 -0.106813 34 -1.214385 .. ... 68 -1.467416 69 -0.008881 70 0.040510 output of pd.show_versions()
INSTALLED VERSIONS
commit: None
python: 2.7.11.final.0
python-bits: 64
OS: Linux
OS-release: 3.13.0-63-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: None
pandas: 0.18.0
nose: 1.3.7
pip: 8.1.0
setuptools: 20.2.2
Cython: 0.22.1
numpy: 1.10.4
scipy: 0.17.0
statsmodels: 0.6.1
xarray: None
IPython: 4.0.0-dev
sphinx: 1.4a1
patsy: 0.3.0
dateutil: 2.4.2
pytz: 2015.7
blosc: None
bottleneck: 1.0.0
tables: 3.2.0
numexpr: 2.4.4
matplotlib: 1.5.1
openpyxl: 1.8.5
xlrd: 0.9.3
xlwt: 1.0.0
xlsxwriter: 0.7.3
lxml: 3.4.4
bs4: 4.3.2
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.5
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.38.0