簡體   English   中英

CSV文件解析(python)

[英]CSV file parsing (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行和輸入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)

問題是此代碼:

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

嘗試這樣的事情:

first_13s = []
last_1s = []

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

您也可以僅使用training_set_data [1:]替換第一行代碼中的許多行

python列表切片非常方便解釋Python的切片符號

您還可以使用列表推導進行浮點轉換:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM