忽略pandas astype

时间:2018-06-14 13:31:56

标签: pandas

我有一个数字列,可能包含不同形式的其他字符 [0-9] 。说:x = pandas.Series(["1","1.2", "*", "1", "**."])。 然后我想使用x.astype(dtype = float, errors = 'ignore') 该系列转换为数字列。我无法弄清楚为什么熊猫不断给我一个错误,尽管我不让他这样做!我的代码有问题吗?

1 个答案:

答案 0 :(得分:8)

我认为您想要使用pd.to_numeric(x, errors='coerce')代替:

In [73]: x = pd.to_numeric(x, errors='coerce')

In [74]: x
Out[74]:
0    1.0
1    1.2
2    NaN
3    1.0
4    NaN
dtype: float64

PS实际上x.astype(dtype = float, errors = 'ignore') - 按预期工作,它没有给出错误,只是保留了系列,因为它无法转换某些元素:

In [77]: x.astype(dtype = float, errors = 'ignore')
Out[77]:
0      1
1    1.2
2      *
3      1
4    **.
dtype: object   # <----- NOTE!!!

In [81]: x.astype(dtype = float, errors = 'ignore').tolist()
Out[81]: ['1', '1.2', '*', '1', '**.']