Pandas中float()的文字无效

时间:2016-06-11 15:57:37

标签: python python-2.7 pandas

我正在处理Pandas中超过60M行的数据集。在我的一个数字列中,我怀疑有一个非数字字符给我错误消息" float()的文字无效:4010146209 +"。

我可以将列加载为obj,但不能加载为float或int。

我试过更换r" \ d"和" +"用""。

我需要在已定义的列中删除带有非数字字符的行,或者删除所有字符,以防止将列作为float或int加载。

该列包含NaN,但在我尝试转换为float之前会删除它们。

2 个答案:

答案 0 :(得分:2)

我会使用to_numeric()函数

演示

In [583]: a
Out[583]:
0                         50.5
1                         50.7
2                         50.9
3                       52.70+
4                         52.9
5                       520.31
6    really bad number: 520.92
Name: Price, dtype: object

In [584]: a = pd.to_numeric(a, errors='coerce')

In [585]: a
Out[585]:
0     50.50
1     50.70
2     50.90
3       NaN
4     52.90
5    520.31
6       NaN
Name: Price, dtype: float64

答案 1 :(得分:1)

您可以.replace()使用regular expression来保留数字值,而不是使用np.nan转换为pd.to_numeric

df['col_name'].replace(to_replace='[^0-9]+', value='',inplace=True,regex=True)