Python:无法将字符串转换为float错误

时间:2016-10-31 05:42:09

标签: python string numpy

我有[NEAR_DIST](< -row 7)的CSV文件。我想知道如何得到这个数组的均值和STD。

我使用了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)

2 个答案:

答案 0 :(得分:0)

这个问题有点不清楚。 我的假设是你有一些形式的数据:

01,02,03,04,05,06,07,08,09,..
11,12,13,14,15,16,17,18,19,32,33,34,35,36,37,38,39,40,41 ..
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

答案 1 :(得分:0)

如果我正确理解您的问题和代码,您需要阅读.csv文件中的第七行。这不是用你的row [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变量会被distance循环中的for row in readCSV:变量覆盖。

因此,如果您想要文件中的第七行,我建议使用计数器来计算您已经传递的行数。如果它已到达第七行,它只会将该行的所有数字相加并存储它们:

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

如果这没有帮助,我建议你在问题中更具体。