我很难将对象转换为浮点。
df_final['INBCS'] = df_final['INBCS'].astype(float)
它一直在说:ValueError:无法将字符串转换为浮点值:"1620000">
如果我尝试不同的方法,我得到的大多是NAN结果。
print(pd.to_numeric(df_final['INBCS'], errors='coerce'))
我又尝试了一种方法,但仍然会出错。
df_final = df_final[df_final['INBCS'].apply(lambda x: x.isnumeric())]
数据中没有NAN;我已经把它们转换成零了。当我打印数据时,它显示逗号,但根本没有逗号。我甚至运行了一个替换函数来消除任何潜在的逗号,但同样,数据中没有逗号。知道这里出了什么问题吗?谢谢
无法将该字符串转换为浮点值的原因是Python不知道如何处理逗号。你可以很容易地复制:
>>> float('1,000')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: '1,000'
只需删除逗号并解析数字是很诱人的,但存在国际化问题。在一些国家,逗号分隔数千(例如,"1000000"是一百万(。在其他国家,逗号分隔小数(例如,"1,05"是百分之一和百分之五(。
出于这个原因,如果你不能以原生形式获得这样的数字,最好使用本地化来解析它。
原因是因为那里有,
,所以可以执行:
df_final['INBCS'] = df_final['INBCS'].replace(',','')
df_final['INBCS'] = df_final['INBCS'].astype(float)
应该起作用。
试试这个:
string = '1,620,000'
decimal = float(''.join(string.split(',')))
print(type(decimal), decimal)
# Prints (<type 'float'>, 1620000.0)
这首先使用split(',')
去掉所有逗号,然后使用''.join()
重新创建字符串。最后,它使用float()
将整个内容转换为浮点值。