2016-10-31 39 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 

如果這是無益的,我建議是你的問題更具體。