将CSV列转换为列表

use*_*251 1 python csv arrays list

说我有一个CSV文件.它包含:

a,b,c
1,2,3
4,5,6
7,8,9
Run Code Online (Sandbox Code Playgroud)

如何将标记为"a"的列转换为列表,而不对其进行硬编码?

最初,我正在为第一行做一个readline a,b,c,然后对每个变量进行硬编码.但后来我想:如果我想这样做可能会导致CSV文件没有以相同的方式排列 - 例如:

b,a,c
2,1,3
5,4,6
8,7,9
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

And*_*ndy 8

您可以使用pandas库执行此操作:

import pandas

data = pandas.read_csv("test.csv", header=0)
col_a = list(data.a)
col_b = list(data.b)
col_c = list(data.c)
Run Code Online (Sandbox Code Playgroud)

中的数值col_a,col_b并且col_c如下:

[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
Run Code Online (Sandbox Code Playgroud)


Zer*_*eus 7

csv.DictReader将CSV文件的每一行转换为字典,并将列标题作为键.对于你的情况(假设你的问题的两个例子被命名为abc.csvbac.csv分别),你可以使用它是这样的:

from csv import DictReader

with open("abc.csv") as f:
    a1 = [row["a"] for row in DictReader(f)]

with open("bac.csv") as f:
    a2 = [row["a"] for row in DictReader(f)]

# a1 == a2 == ['1', '4', '7']
Run Code Online (Sandbox Code Playgroud)