将str类型的系列转换为数字,我可以

时间:2016-09-14 14:42:30

标签: python pandas

考虑str类型系列s

s = pd.Series(['a', '1'])
pd.to_numeric(s, 'ignore')

0    a
1    1
dtype: object
pd.to_numeric(s, 'ignore').apply(type)

0    <type 'str'>
1    <type 'str'>
dtype: object

显然,这两种类型仍然是字符串。似乎'ignore'选项忽略了entires系列转换。如何让它尽其所能而忽略其余部分。

我希望系列类型为

pd.to_numeric(s, 'ignore').apply(type)

0    <type 'str'>
1    <type 'int'>
dtype: object
编辑:在我发布问题之后,在@ayhan提供答案后,我想出了这个。

我的解决方案
没有矢量化,但给了我我想要的东西

s.apply(pd.to_numeric, errors='ignore')

1 个答案:

答案 0 :(得分:3)

这就是我正在使用的:

pd.to_numeric(s, errors='coerce').fillna(s)
Out: 
0    a
1    1
dtype: object
pd.to_numeric(s, errors='coerce').fillna(s).apply(type)
Out: 
0      <class 'str'>
1    <class 'float'>
dtype: object