2016-10-31 40 views
1

我有[NEAR_DIST(< - 行7)CSV文件。我想知道如何获得这个数组的平均值和STD。的Python:不能将字符串转换为浮动错误

我使用CSV和numpy的:

# -*- coding: utf-8 -*- 
import csv 
import numpy 

with open('C:\\test.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',') 
    distance = [] 
    distance.append(float(x) for x in csvfile) 
    for row in readCSV: 
     distance = row[7] 
     a = numpy.array(distance, dtype = 'float_') 
     b = numpy.sum(a) 
     print(b) 
+0

几行形成文件的例子会很有用。 – Marcin

+0

@Marcin说的以及线条的确切错误,这对于想要回答你的人有帮助。 –

+0

此外,使用'numpy.genfromtxt'而不是python'csv'来获得更自然和更快的性能 – AbdealiJK

回答

0

的问题是有点不清楚。 我的假设是,你有表格的一些数据:

01,02,03,04,05,06,07,08,09,...
11,12,13,14,15,16 ,17,18,19,...
21,22,23,24,25,26,27,28,29,...
,你想找到在第7列元素的总和。即在这个例子中为7 + 17 + 27 + ...。

这应该工作:

import numpy 
data = numpy.genfromtxt("a.csv", delimiter=",") 
data[:, 6].sum() # 6 because indices start from 0 in python 
0

如果我理解你的问题,正确的代码,你想读的第七行.csv文件。这不是用你的行[7]语句完成的。如果你这样做:

for row in readCSV: 

您将通过.csv文件中所有的线,读一次一个,并把它作为row。使用分隔符(在本例中为逗号),逗号之间的所有内容都将添加到列表中。例如,您的csv文件中的行"0,12,23,37.154,444"将最终显示在以下列表中:[0,12,23,37.154,444]包含5个元素。

当您访问row[7]时,您正在循环中使用当前row的八列(请记住Python从0开始计数)。

此外,您在开始定义的变量distance将被for row in readCSV:循环中的distance变量覆盖。

所以,如果你想要的第七行的文件,我建议与计算你有多少行已经通过了柜台工作。如果已经达到第七行,它只是增加了该行的所有的数字和存储他们:

import csv 
with open('C:\\test.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',') 

    # Create counter variable to count rows 
    rowCounter = 0 

    # Create distance variable to sum distances later 
    distance = 0 

    # Go through each row in the csv file 
    for row in readCSV: 
     rowCounter += 1 # Add one to the rowCounter 
     if rowCounter == 7: # If rowCounter is seventh row 
      for e in row: # For every element in this row 
       distance += float(e) # Add the float of that element to distance 

如果这是无益的,我建议是你的问题更具体。