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