Description
Code Sample, a copy-pastable example if possible
In [3]: pd.MultiIndex.from_arrays([['a', 'b', 'b'], [2, np.nan, 2]]).get_level_values(1)
Out[3]: Int64Index([2.0, nan, 2.0], dtype='float64')
Problem description
An Int64Index
should never have dtype='float64'
.
Ironically, this is tested extensively in test_get_level_values_na
inside pandas/tests/indexes/test_multi.py
, except that then the result is explicitly casted (this came out from this comment by Joris).
I'm pretty sure the bug comes from this line, but at the moment I'm not sure what should replace it.
Expected Output
Float64Index([2.0, nan, 2.0], dtype='float64')
Output of pd.show_versions()
INSTALLED VERSIONS
commit: 51c5f4d
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.0rc1+26.g51c5f4d2a
pytest: 3.0.6
pip: 9.0.1
setuptools: None
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
pyarrow: None
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.0
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
fastparquet: None
pandas_gbq: None
pandas_datareader: 0.2.1