Python 为什么pandas.DataFrame.update会更改已更新数据帧的数据类型?

Python 为什么pandas.DataFrame.update会更改已更新数据帧的数据类型?,python,pandas,Python,Pandas,出于明显的原因,我希望在更新后将列的数据类型保持为int。你知道为什么这不能按预期工作吗 import pandas as pd df1 = pd.DataFrame([ {'a': 1, 'b': 2, 'c': 'foo'}, {'a': 3, 'b': 4, 'c': 'baz'}, ]) df2 = pd.DataFrame([ {'a': 1, 'b': 8, 'c': 'bar'}, ]) print 'dtypes before update:\n%s

出于明显的原因,我希望在更新后将列的数据类型保持为int。你知道为什么这不能按预期工作吗

import pandas as pd

df1 = pd.DataFrame([
    {'a': 1, 'b': 2, 'c': 'foo'},
    {'a': 3, 'b': 4, 'c': 'baz'},
])

df2 = pd.DataFrame([
    {'a': 1, 'b': 8, 'c': 'bar'},
])

print 'dtypes before update:\n%s\n%s' % (df1.dtypes, df2.dtypes)

df1.update(df2)

print '\ndtypes after update:\n%s\n%s' % (df1.dtypes, df2.dtypes)
输出如下所示:

dtypes before update:
a     int64
b     int64
c    object
dtype: object
a     int64
b     int64
c    object
dtype: object

dtypes after update:
a    float64
b    float64
c     object
dtype: object
a     int64
b     int64
c    object
dtype: object
感谢所有有建议的人

这是一个众所周知的问题。我认为您当前唯一的选择是在更新后调用
astype(int)