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