我收到一个csv文件,其中包含800到3000之间的数字。问题是大于千的数字中有逗号,例如1,227或1,074或2,403。 当我想使用scipy或numpy计算它们的均值,方差或标准差时,我得到错误:ValueError:无法将字符串转换为float:' 1,227'。如何将它们转换为数字,以便我可以对它们进行计算。不应更改CSV文件,因为它是只读文件。
答案 0 :(得分:1)
谢谢,伙计们!我通过使用替换功能修复它。 hpaulj的链接很有用。
my_string=[val[2] for val in csvtext]
my_string=[x.replace(',', '') for x in my_string]
my_float=[float(i) for i in my_string]
这是代码,其中,第1行将csv字符串列表加载到my_string,第2行删除逗号,第3行生成易于计算的数字。因此,无需编辑文件或创建新文件。只需一个列表操作即可完成工作。
答案 1 :(得分:0)
这确实是一个locale
问题,但一个简单的解决方案就是首先在字符串上调用replace
:
a = '1,274'
float(a.replace(',','')) # 1274.0
另一种方法是使用pandas
来读取csv文件。它的read_csv
函数有一个thousands
参数。
如果你对某个语言区有所了解,那么最好使用locale.atof()
函数