像这样做
In [49]: df = DataFrame([['1','2','3','.4',5,6.,'foo']],columns=list('ABCDEFG'))
In [50]: df
Out[50]:
A B C D E F G
0 1 2 3 .4 5 6 foo
In [51]: df.dtypes
Out[51]:
A object
B object
C object
D object
E int64
F float64
G object
dtype: object
需要逐个分配列
In [52]: for k, v in df.iloc[:,0:4].convert_objects(convert_numeric=True).iteritems():
df[k] = v
....:
In [53]: df.dtypes
Out[53]:
A int64
B int64
C int64
D float64
E int64
F float64
G object
dtype: object
转换对象通常做正确的事情,所以最容易做到这一点
In [54]: df = DataFrame([['1','2','3','.4',5,6.,'foo']],columns=list('ABCDEFG'))
In [55]: df.convert_objects(convert_numeric=True).dtypes
Out[55]:
A int64
B int64
C int64
D float64
E int64
F float64
G object
dtype: object
通过df.iloc [:,4:]分配右侧的系列根据需要复制数据更改类型,所以我认为这应该在理论上有效,但我怀疑这是一个非常模糊的错误,可以防止对象dtype从更改为实际(意味着int / float)dtype.现在应该提高.