簡體   English   中英

如何將csv中的每一列保存到列表中?

[英]How can I save each column in a csv into a list?

我正在嘗試通過以下方式使每一列進入列表:

f = open('file.csv', 'r') 
a = [float(item.split('.')[0]) for item in f]
b = [float(item.split('.')[1]) for item in f]

當我打印a我得到一個包含第一列所有值的列表,但是當我打印b它顯示了一個空列表。 我嘗試將a的列更改為b並將a的列更改為我要的列,就在第一個定義的列表之后,它一直顯示空列表。

您也可以只使用csv.reader

import csv

list_a = []
list_b = []

with open('file.csv', newline='') as csv_file:
    reader = csv.reader(csv_file, delimiter='.')
    next(reader, None)  # Skip the header.
    for a, b in reader:
        list_a.append(float(a))
        list_b.append(float(b))

或使用zip技巧:

with open('file.csv', newline='') as csv_file:
    reader = csv.reader(csv_file, delimiter='.')
    next(reader, None)  # Skip the header.
    list_a, list_b = zip(*(map(float, row) for row in reader))

a = [float(item.split('.')[0]) for item in f]從文件中讀取所有內容。 第二個列表理解沒有什么可剩下的了。 您必須關閉文件然后再次打開它,例如:

with open('file.csv', 'r') as f:
    a = [float(item.split('.')[0]) for item in f] 
with open('file.csv', 'r') as f:
    b = [float(item.split('.')[1]) for item in f]

但是,最好只讀取一次文件並在一個循環中處理a和b都更好:

with open('file.csv', 'r') as f:
    a, b = zip(*[map(float, item.split('.')) for item in f])

暫無
暫無

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

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