Issue 1:
From SO question:

Sample:

np.random.seed(57)

idx = pd.CategoricalIndex(['low'] * 3 + ['hi'] * 3)
dfb = pd.DataFrame(np.random.rand(6, 3), columns=list('abc'), index=idx)
print (dfb)
a b c
low 0.087350 0.230477 0.411061
low 0.310783 0.565956 0.545064
low 0.807099 0.918155 0.522091
hi 0.424687 0.071804 0.898529
hi 0.420514 0.582170 0.214154
hi 0.447486 0.467864 0.100637

Round incorrectly explode rows:

print (dfb.round(3))
a b c
low 0.087 0.230 0.411
low 0.311 0.566 0.545
low 0.807 0.918 0.522
low 0.087 0.230 0.411
low 0.311 0.566 0.545
low 0.807 0.918 0.522
low 0.087 0.230 0.411
low 0.311 0.566 0.545
low 0.807 0.918 0.522
hi 0.425 0.072 0.899
hi 0.421 0.582 0.214
hi 0.447 0.468 0.101
hi 0.425 0.072 0.899
hi 0.421 0.582 0.214
hi 0.447 0.468 0.101
hi 0.425 0.072 0.899
hi 0.421 0.582 0.214
hi 0.447 0.468 0.101

Expected output:

print (dfb.round(3))
a b c
low 0.087 0.230 0.411
low 0.311 0.566 0.545
low 0.807 0.918 0.522
hi 0.425 0.072 0.899
hi 0.421 0.582 0.214
hi 0.447 0.468 0.101

print (pd.show_versions())

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.4.final.0
python-bits: 64
OS: Windows
OS-release: 7
machine: AMD64
processor: Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en
LOCALE: None.None

pandas: 0.23.1
pytest: 3.3.2
pip: 9.0.1
setuptools: 39.2.0
Cython: 0.27.3
numpy: 1.14.3
scipy: 1.0.0
pyarrow: None
xarray: None
IPython: 6.2.1
sphinx: 1.6.6
patsy: 0.5.0
dateutil: 2.7.3
pytz: 2018.4
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: None
matplotlib: 2.2.2
openpyxl: 2.4.10
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 1.0.2
lxml: 4.1.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.1
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
None

Issue 2:
Retrieving a dataframe previously stored in a HDFStore with a row label "nan" (string) is incorrectly retrieved as NaN.

My blog talks more about this issue: http://makeyourowntextminingtoolkit.blogspot.co.uk/2016/09/pandas-dataframe-hdfstore-bug.html

Note: to_pickle() fails for lathe dataframes, hence HDF5

create dataframe and store it

import pandas
df1 = pandas.DataFrame()
df1.ix['apple', '001'] = 0.1
df1.ix['banana', '001'] = 0.2
df1.ix['apple', '002'] = 0.3
df1.ix['banana', '002'] = 0.7
df1.ix['nan', '001'] = 0.5

df1
001 002
apple 0.1 0.3
banana 0.2 0.7
nan 0.5 NaN

s = pandas.HDFStore('test')
s['index'] = df1
s.close()

now retrieve it

import pandas
s = pandas.HDFStore('test')
s
<class 'pandas.io.pytables.HDFStore'>
File path: test
/index frame (shape->[3,2])

df2 = s['index']
s.close()
del s
df2
001 002
apple 0.1 0.3
banana 0.2 0.7
NaN 0.5 NaN

That NaN should be a string "nan" just like "banana" and "apple".

workaround

df2.index = df2.index.astype(str)
df2
001 002
apple 0.1 0.3
banana 0.2 0.7
nan 0.5 NaN

output of pd.show_versions()

This is the latest anaconda python 3.5 64bit for MacOSX.

INSTALLED VERSIONS
------------------
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Darwin
OS-release: 15.6.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_GB.UTF-8

pandas: 0.18.1
nose: 1.3.7
pip: 8.1.2
setuptools: 26.1.1
Cython: 0.24.1
numpy: 1.11.1
scipy: 0.18.0
statsmodels: 0.6.1
xarray: None
IPython: 5.1.0
sphinx: 1.4.1
patsy: 0.4.1
dateutil: 2.5.3
pytz: 2016.6.1
blosc: None
bottleneck: 1.1.0
tables: 3.2.3.1
numexpr: 2.6.1
matplotlib: 1.5.1
openpyxl: 2.3.2
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.2
lxml: 3.6.4
bs4: 4.5.1
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.13
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.42.0
pandas_datareader: None