我正在处理Pandas中超过60M行的数据集。在我的一个数字列中,我怀疑有一个非数字字符给我错误消息" float()的文字无效:4010146209 +"。
我可以将列加载为obj,但不能加载为float或int。
我试过更换r" \ d"和" +"用""。
我需要在已定义的列中删除带有非数字字符的行,或者删除所有字符,以防止将列作为float或int加载。
该列包含NaN,但在我尝试转换为float之前会删除它们。
答案 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)