Python 中float()的文本无效

Python 中float()的文本无效,python,python-2.7,pandas,Python,Python 2.7,Pandas,我正在处理一个数据集,该数据集中有超过6000万行的数据。在我的一个数字列中,我怀疑有一个非数字字符,它给了我错误消息“float()的无效文本:4010146209+” 我可以将列作为obj加载,但不能作为float或int加载 我已尝试将r“\d”和“+”替换为“” 我需要删除已定义列中带有非数字字符的行,或者删除所有阻止该列作为float或int加载的字符 该列包含NaN,但在我尝试转换为浮点之前,这些将被删除。您可以使用a保留数值,而不是使用pd转换为np。NaN使用pd转换为数值: d

我正在处理一个数据集,该数据集中有超过6000万行的数据。在我的一个数字列中,我怀疑有一个非数字字符,它给了我错误消息“float()的无效文本:4010146209+”

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

我已尝试将r“\d”和“+”替换为“”

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

该列包含NaN,但在我尝试转换为浮点之前,这些将被删除。

您可以使用a保留数值,而不是使用pd转换为np。NaN使用pd转换为数值:

df['col_name'].replace(to_replace='[^0-9]+', value='',inplace=True,regex=True)
我会用这个函数

演示

为什么要替换
r“\d”
?这将删除所有的数字。您应该替换除数字之外的所有匹配项的
r“\D”
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