繁体   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