CSV文件解析(python)

2024-04-16 16:55:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在解析一个包含14列的csv文件时遇到了一些问题。你知道吗

for row in training_set_data:
    if skiprow:
            skiprow = False
    else:
            for r in range(len(row)):
                    row[r] = float(row[r])
            training_set.append(row)

这似乎只是为了得到一个向量列表,但下一步我要做的是收集每行的前13个条目并生成一组向量,然后收集最后一列并生成一组单独的向量。对于13个输入向量,我的代码如下所示:

def inputVector(inputs):
    for r in inputs:
        inputs.pop(13)
    return inputs

这是不工作,当我去打印它,它仍然是14个条目长。有人能告诉我我做错了什么吗?抱歉,如果这个问题没有太多的意义,我是相当新的编码。你知道吗

编辑:csv文件的前11行和对input vecto的调用

53,1,3,130,197,1,2,152,0,1.2,3,0,3,0
42,1,4,136,315,0,0,125,1,1.8,2,0,6,1
46,1,4,140,311,0,0,120,1,1.8,2,2,7,1
42,1,4,140,226,0,0,178,0,0,1,0,3,0
54,1,4,140,239,0,0,160,0,1.2,1,0,3,0
67,0,3,115,564,0,2,160,0,1.6,2,0,7,0
65,0,3,140,417,1,2,157,0,0.8,1,1,3,0
56,0,4,134,409,0,2,150,1,1.9,2,2,7,1
65,0,3,160,360,0,2,151,0,0.8,1,0,3,0
57,0,4,120,354,0,0,163,1,0.6,1,0,3,0
55,0,4,180,327,0,1,117,1,3.4,2,0,3,1

inputV = inputVector(training_set)

Tags: 文件csvinfalsefordataiftraining
2条回答

尝试以下操作:

first_13s = []
last_1s = []

for r in inputs:
    first_13s.append(r[:13])
    last_1s.append(r[13])

您还可以使用 训练集数据[1:]

python列表切片非常方便Explain Python's slice notation

您还可以使用列表理解进行浮点转换:

for r in range(len(row)):
    row[r] = float(row[r])

变成

row = [float(r) for r in row]

所以第一块可以这样做:

for row in training_set_data[1:]:
    row = [float(r) for r in row]
    training_set.append(row)

问题是这个代码:

def inputVector(inputs):
    for r in inputs:
        inputs.pop(13)
    return inputs

您正在迭代所有inputs,并从inputs而不是从r中删除元素。要从每行中删除元素13,请执行以下操作:

def inputVector(inputs):
    for r in inputs:
        r.pop(13)  # <  replaced inputs with r
    return inputs

相关问题 更多 >