Python – ValueError:float()的无效文字:

我有一个csv文件,我试图计算出现在它的每个列的平均值。

#!/usr/bin/python with open('/home/rnish/Desktop/lbm-reference.dat.ref-2013-01-30-13-00-15big.csv', "rU") as f: columns = f.readline().strip().split(' ') numRows = 0 sums = [0] * len(columns) for line in f: values = line.split(" ") print values for i in xrange(len(values)): sums[i] += float(values[i]) numRows += 1 # for index, summedRowValue in enumerate(sums): # print columns[index], 1.0 * summedRowValue / numRows 

我得到的错误是:

  File "excel.py", line 15, in <module> sums[i] += float(values[i]) ValueError: invalid literal for float(): 0,536880742,8861743,0,4184866,4448905 

这就是print values的输出结果:

 ['0,256352728,10070198,5079543,5024472,34764\n'] ['0,352618127,10102320,4987654,3082111,1902909\n'] ['0,505838297,9977968,423278,4709666,5041639\n'] ['0,506598469,10083489,0,5032146,5054715\n'] ['0,536869414,7229488,39934,4322290,3607046\n'] 

这是csv文件的外观:

 0,256641418,10669052,4803710,4759922,0 0,484517531,9889830,1457230,4084777,4959529 0,506902273,9673699,0,5281012,5293376 

有人可以解释一下,帮助我理解这个问题:

我在阅读了几个post后认为这是由于新的字符。 我对么?

您正在将一个.cvs文件拆分为一个空格,但字符串中没有空格。 尝试用逗号分割:

  columns = f.readline().strip().split(',') 

使用numpy :

 import numpy as np a = np.loadtxt("data.csv", delimiter=",") mean = np.mean(a, axis=0) print(mean) 

使用csv模块 :

 import csv import sys it = csv.reader(sys.stdin, quoting=csv.QUOTE_NONNUMERIC) avg = next(it, []) count = 1 for count, row in enumerate(it, start=2): for i, value in enumerate(row): avg[i] += value avg = [a/count for a in avg] print(avg) 

产量

 [0.0, 431655407.0, 9492692.6, 2106081.8, 4434137.0, 3128214.6]