在python中读取CSV的第一列

P.J*_*.J. 5 python csv

我有一个包含2列的CSV(mylist.csv),其外观与此类似:

jfj840398jgg     item-2f
hd883hb2kjsd     item-9k
jie9hgtrbu43     item-12
fjoi439jgnso     item-3i
Run Code Online (Sandbox Code Playgroud)

我需要将第一列读入变量,所以我得到:

jfj840398jgg
hd883hb2kjsd
jie9hgtrbu43
fjoi439jgnso
Run Code Online (Sandbox Code Playgroud)

我尝试了以下操作,但这只是给我每列的第一个字母:

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

所以上面代码的结果给我list2为:

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

Mos*_*oye 5

您应该split在行中附加第一项

list2 = []
with open("mylist.csv") as f:
    for row in f:
        list2.append(row.split()[0])
Run Code Online (Sandbox Code Playgroud)

您还可以使用列表理解功能,这是创建列表的非常标准的方法:

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

  • 仅当 `csv` 使用空格作为分隔符时才有效 (2认同)
  • 您可以进一步设置“row.split(None, 1)[0]”以避免拆分所有列... (2认同)

alp*_*aca 5

您也可以pandas在这里使用:

import pandas as pd
df = pd.read_csv(mylist.csv)
Run Code Online (Sandbox Code Playgroud)

然后,获取第一列就像:

matrix2 = df[df.columns[0]].as_matrix()
list2 = matrix2.tolist()
Run Code Online (Sandbox Code Playgroud)

这将仅返回 中的第一列listnumpy如果您要对获得的结果进行进一步的数据操作,您可能需要考虑将数据留在 中。


小智 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])
Run Code Online (Sandbox Code Playgroud)

您可以将分隔符更改","" ".