在Python中读取CSV文件的第一列

13

我有一个CSV文件(mylist.csv),其中有2列看起来类似于这样:

jfj840398jgg     item-2f
hd883hb2kjsd     item-9k
jie9hgtrbu43     item-12
fjoi439jgnso     item-3i

我需要将第一列读入一个变量中,以便只获取:

jfj840398jgg
hd883hb2kjsd
jie9hgtrbu43
fjoi439jgnso

我尝试了以下方法,但它只给出了每列的第一个字母:

import csv
list2 = []
with open("mylist.csv") as f:
    for row in f:
        list2.append(row[0])

所以上述代码的结果给出了list2

['j', 'h', 'j', 'f']

3
你需要使用 split() 函数对行进行分割,然后获取第一个元素。 - vishes_shell
1
如果您不使用csv,也不需要导入它。您只需像读取txt文件一样读取该文件即可。在这种情况下,请按照@vishes_shell的建议操作。 - Ma0
5个回答

16
你应该 split 这行数据,然后将第一项添加上去。
list2 = []
with open("mylist.csv") as f:
    for row in f:
        list2.append(row.split()[0])
你也可以使用列表推导式来创建列表,它们非常常见:

You could also use a list comprehension which are pretty standard for creating lists:

with open("mylist.csv") as f:
    list2 = [row.split()[0] for row in f]

4
只有当csv文件使用空格作为分隔符时,这个方法才有效。 - Ma0
@Ev.Kounis的CSV文件使用空格作为分隔符。 - depperm
2
你还可以进一步将 row.split(None, 1)[0] 进行优化,以避免分割所有列... - Jon Clements

6

在这里您也可以使用pandas

import pandas as pd
df = pd.read_csv(mylist.csv)

然后,获取第一列就像这样简单:
matrix2 = df[df.columns[0]].as_matrix()
list2 = matrix2.tolist()

这将仅返回list中的第一列。如果您对结果进行进一步的数据操作,您可能希望考虑保留numpy中的数据。


1
这段代码没有按预期工作,其中 matrix2 = df[df.columns[0]].as_matrix() 会生成一个错误。我不得不删除 "is_matrix()" 调用,这样问题就解决了。 - acaruci

5

您可以使用 csv 模块:

import csv

with open("processes_infos.csv", "r", newline="") as file:
    reader = csv.reader(file, delimiter=",")
    for row in reader:
        print(row[0], row[1])

你可以把分隔符","改为" "


1
这将打印该文件中的所有行。我如何从CSV的任何行获取特定列数据? - Pankaj Kumar

4
你导入了csv,但实际上没有使用它来读取CSV文件。然后你像打开普通文件一样打开了mylist.csv,所以当你声明:
 for row in f:
    list2.append(row[0])

实际上,你告诉Python要做的是“遍历每一行,并将行的第一个元素(也就是第一个字母)追加到list2中”。如果你想使用CSV模块,你需要这样做:

import csv
with open('mylist.csv', 'r') as f:
    csv_reader = csv.reader(f, delimiter='     ')
    for row in csv_reader:
        list2.append(row[0])

-3

最简单的答案

import pandas as pd
df = pd.read_csv(mylist.csv)
matrix2 = df[df.columns[0]].to_numpy()
list1 = matrix2.tolist()
print(list1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接