Indexing into a dataframe re-casts / "forgets" dtypes #16508
Labels
Dtype Conversions
Unexpected or buggy dtype conversions
Duplicate Report
Duplicate issue or pull request
Indexing
Related to indexing on series/frames, not to indexes themselves
Code Sample, a copy-pastable example if possible
Problem description
After I reassign the 0th column as int, I expect it to be int, and it appears to be that way. But when I do a
.iloc
on the dataframe, it seems to be returning back into being a float somehow!This is the narrowed-down version of a more insidious problem where instead of doing an
iloc[]
I was running a.apply(f)
on a dataframe and the dtypes of the resulting dataframe were all messed up even when the functionf
wasn't doing anything discernible with the types, so I narrowed it down to this.Current workaround is to re-cast all the types in
f
, but that can get frustrating real quick depending on the number of columns.Expected Output
I expect the row to be a mixed dtype object, with the dtype of each cell matching that of the column:
Output of
pd.show_versions()
pandas: 0.20.1
pytest: 3.0.7
pip: 9.0.1
setuptools: 35.0.2
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
xarray: None
IPython: 6.0.0
sphinx: None
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: 1.5.1
bottleneck: 1.2.0
tables: 3.3.0
numexpr: 2.6.2
feather: None
matplotlib: 2.0.2
openpyxl: None
xlrd: 1.0.0
xlwt: 1.2.0
xlsxwriter: None
lxml: None
bs4: None
html5lib: 0.999999999
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: 0.0.9
pandas_gbq: None
pandas_datareader: None
The text was updated successfully, but these errors were encountered: