<p dir="auto">There is an inconsistency between how Series and DataFrames export types to dicts. The issue only manifests if the dataframe has multiple columns with different types. I think the issue is probably pretty far under the surface with differences between Series and DataFrame dtypes and just happened to be uncovered by export to dict.</p>
<h4 dir="auto">Code Sample, a copy-pastable example if possible</h4>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import pandas as pd

orig_dict = [{0: 'a', 1: 1}]

# does not happen with
# orig_dict =[{0: 0, 1: 1}]

print 'Original dict'
for k in orig_dict[0]:
    print type(orig_dict[0][k])
print

df = pd.DataFrame(orig_dict)
dict_exported_from_dataframe = [df.loc[[x]].to_dict(orient='records')[0] for x in df.index]
dict_exported_from_series = [df.loc[x].to_dict() for x in df.index]

print 'Dict exported from DataFrame'
for k in dict_exported_from_dataframe[0]:
    print type(dict_exported_from_dataframe[0][k])
print

print 'Dict exported from Series'
for k in dict_exported_from_series[0]:
    print type(dict_exported_from_series[0][k])
print"><pre class="notranslate"><code class="notranslate">import pandas as pd

orig_dict = [{0: 'a', 1: 1}]

# does not happen with
# orig_dict =[{0: 0, 1: 1}]

print 'Original dict'
for k in orig_dict[0]:
    print type(orig_dict[0][k])
print

df = pd.DataFrame(orig_dict)
dict_exported_from_dataframe = [df.loc[[x]].to_dict(orient='records')[0] for x in df.index]
dict_exported_from_series = [df.loc[x].to_dict() for x in df.index]

print 'Dict exported from DataFrame'
for k in dict_exported_from_dataframe[0]:
    print type(dict_exported_from_dataframe[0][k])
print

print 'Dict exported from Series'
for k in dict_exported_from_series[0]:
    print type(dict_exported_from_series[0][k])
print
</code></pre></div>
<h4 dir="auto">Expected Output</h4>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Original dict
&lt;type 'str'&gt;
&lt;type 'int'&gt;

Dict exported from DataFrame
&lt;type 'str'&gt;
&lt;type 'int'&gt;

Dict exported from Series
&lt;type 'str'&gt;
&lt;type 'int'&gt;"><pre class="notranslate"><code class="notranslate">Original dict
&lt;type 'str'&gt;
&lt;type 'int'&gt;

Dict exported from DataFrame
&lt;type 'str'&gt;
&lt;type 'int'&gt;

Dict exported from Series
&lt;type 'str'&gt;
&lt;type 'int'&gt;
</code></pre></div>
<p dir="auto">OR</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Original dict
&lt;type 'str'&gt;
&lt;type 'int'&gt;

Dict exported from DataFrame
&lt;type 'str'&gt;
&lt;type 'numpy.int64'&gt;

Dict exported from Series
&lt;type 'str'&gt;
&lt;type 'numpy.int64'&gt;"><pre class="notranslate"><code class="notranslate">Original dict
&lt;type 'str'&gt;
&lt;type 'int'&gt;

Dict exported from DataFrame
&lt;type 'str'&gt;
&lt;type 'numpy.int64'&gt;

Dict exported from Series
&lt;type 'str'&gt;
&lt;type 'numpy.int64'&gt;
</code></pre></div>
<h4 dir="auto">output of <code class="notranslate">pd.show_versions()</code></h4>
<h2 dir="auto">INSTALLED VERSIONS</h2>
<p dir="auto">commit: None<br>
python: 2.7.10.final.0<br>
python-bits: 64<br>
OS: Darwin<br>
OS-release: 14.5.0<br>
machine: x86_64<br>
processor: i386<br>
byteorder: little<br>
LC_ALL: None<br>
LANG: en_US.UTF-8</p>
<p dir="auto">pandas: 0.18.1<br>
nose: None<br>
pip: 8.1.2<br>
setuptools: 25.2.0<br>
Cython: None<br>
numpy: 1.11.1<br>
scipy: 0.13.0b1<br>
statsmodels: None<br>
xarray: None<br>
IPython: 5.1.0<br>
sphinx: None<br>
patsy: None<br>
dateutil: 2.5.3<br>
pytz: 2016.6.1<br>
blosc: None<br>
bottleneck: None<br>
tables: None<br>
numexpr: None<br>
matplotlib: None<br>
openpyxl: None<br>
xlrd: None<br>
xlwt: None<br>
xlsxwriter: None<br>
lxml: None<br>
bs4: None<br>
html5lib: None<br>
httplib2: None<br>
apiclient: None<br>
sqlalchemy: None<br>
pymysql: None<br>
psycopg2: None<br>
jinja2: None<br>
boto: None<br>
pandas_datareader: None</p>
<h4 dir="auto">Code Sample, a copy-pastable example if possible</h4>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="import pandas as P
S=P.Series([0.6,0.2,15])"><pre class="notranslate"><code class="notranslate">import pandas as P
S=P.Series([0.6,0.2,15])
</code></pre></div>
<p dir="auto"><strong>pandas 0.18+numpy 0.10</strong>:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In [1]: print S.dtype
float64

In [2]: print S.values.dtype
float64

In [3]: print S.map(type)
0    &lt;type 'numpy.float64'&gt;
1    &lt;type 'numpy.float64'&gt;
2    &lt;type 'numpy.float64'&gt;
dtype: object"><pre class="notranslate"><code class="notranslate">In [1]: print S.dtype
float64

In [2]: print S.values.dtype
float64

In [3]: print S.map(type)
0    &lt;type 'numpy.float64'&gt;
1    &lt;type 'numpy.float64'&gt;
2    &lt;type 'numpy.float64'&gt;
dtype: object
</code></pre></div>
<p dir="auto"><strong>pandas 0.18.1+numpy 0.11.0</strong>:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="In [5]: print S.dtype
float64

In [6]: print S.values.dtype
float64

In [7]: print S.map(type)
0    &lt;type 'float'&gt;
1    &lt;type 'float'&gt;
2    &lt;type 'float'&gt;
dtype: object"><pre class="notranslate"><code class="notranslate">In [5]: print S.dtype
float64

In [6]: print S.values.dtype
float64

In [7]: print S.map(type)
0    &lt;type 'float'&gt;
1    &lt;type 'float'&gt;
2    &lt;type 'float'&gt;
dtype: object
</code></pre></div>
<p dir="auto">I expect to get the same dtype for the 3 print, why this is changed in last version?</p>
<h4 dir="auto">output of <code class="notranslate">pd.show_versions()</code></h4>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="pandas: 0.18.1
nose: 1.3.7
pip: 1.5.4
setuptools: 21.0.0
Cython: 0.24
numpy: 1.11.0
scipy: 0.17.0
statsmodels: 0.6.1
xarray: None
IPython: 4.2.0
sphinx: 1.3.5
patsy: 0.4.1
dateutil: 2.4.2
pytz: 2016.4
blosc: 1.2.7
bottleneck: None
tables: 3.2.2
numexpr: 2.5.2
matplotlib: 1.5.1
openpyxl: 2.3.5
xlrd: 0.9.4
xlwt: 1.0.0
xlsxwriter: None
lxml: 3.4.0
bs4: 4.4.1
html5lib: 0.9999999
httplib2: None
apiclient: None
sqlalchemy: 1.0.12
pymysql: None
psycopg2: None
jinja2: 2.8
boto: None
pandas_datareader: None"><pre class="notranslate"><code class="notranslate">pandas: 0.18.1
nose: 1.3.7
pip: 1.5.4
setuptools: 21.0.0
Cython: 0.24
numpy: 1.11.0
scipy: 0.17.0
statsmodels: 0.6.1
xarray: None
IPython: 4.2.0
sphinx: 1.3.5
patsy: 0.4.1
dateutil: 2.4.2
pytz: 2016.4
blosc: 1.2.7
bottleneck: None
tables: 3.2.2
numexpr: 2.5.2
matplotlib: 1.5.1
openpyxl: 2.3.5
xlrd: 0.9.4
xlwt: 1.0.0
xlsxwriter: None
lxml: 3.4.0
bs4: 4.4.1
html5lib: 0.9999999
httplib2: None
apiclient: None
sqlalchemy: 1.0.12
pymysql: None
psycopg2: None
jinja2: 2.8
boto: None
pandas_datareader: None
</code></pre></div>
<p dir="auto">Thank you<br>
Gla</p>