如何在python中选择csv文件的特定列

2024-05-04 05:55:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的初学者,想听听你的意见

我编写了这段代码,读取我电脑上文件中的唯一列,并将其放入列表中

我很难理解如何使用具有多列的文件修改同一代码,并仅选择我感兴趣的列

你能帮我吗

list = [] 
with open(r'C:\Users\Desktop\mydoc.csv') as file:
    for line in file:
        item = int(line)
        list.append(item)

    results = []

    for i in range(0,1086):
        a = list[i-1]
        b = list[i]
        c = list[i+1]
        results.append(b)

print(results)

3条回答

您可以像这样简单地使用^{}方法:

import pandas as pd

my_data_frame = pd.read_csv('path/to/your/data')
results = my_data_frame['name_of_your_wanted_column'].values.tolist()

对于纯python实现,应该使用csv包

data.csv

Project1,folder1/file1,data
Project1,folder1/file2,data
Project1,folder1/file3,data
Project1,folder1/file4,data
Project1,folder2/file11,data
Project1,folder2/file42a,data
Project1,folder2/file42b,data
Project1,folder2/file42c,data
Project1,folder2/file42d,data
Project1,folder3/filec,data    
Project1,folder3/fileb,data
Project1,folder3/filea,data

python程序应该逐行读取它

import csv
a = []
with open('data.csv') as csv_file:
    reader = csv.reader(csv_file, delimiter=',')
    for row in reader:
        print(row)
        # ['Project1', 'folder1/file1', 'data']

如果打印row元素,您将看到它是这样一个列表

['Project1', 'folder1/file1', 'data']

如果我想将第1列中的所有元素都放在列表中,我需要将该元素放在列表中,执行以下操作:

a.append(row[1])

现在在列表a中,我将有一个如下列表:

['folder1/file1', 'folder1/file2', 'folder1/file3', 'folder1/file4', 'folder2/file11', 'folder2/file42a', 'folder2/file42b', 'folder2/file42c', 'folder2/file42d', 'folder3/filec', 'folder3/fileb', 'folder3/filea']

以下是完整的代码:

import csv
a = []
with open('data.csv') as csv_file:
     reader = csv.reader(csv_file, delimiter=',')
     for row in reader:
         a.append(row[1])

对于您正在做的工作,一个有用的模块是富有想象力的csv模块

许多csv文件的顶部都有一个“标题”,按照惯例,这是标记文件列的一种有用方法。假设您可以在csv文件顶部插入一行逗号分隔的字段名,那么您可以将程序替换为以下内容:

import csv
with open(r'C:\Users\Desktop\mydoc.csv') as myfile:
    csv_reader = csv.DictReader(myfile)
    for row in csv_reader:
        print ( row['column_name_of_interest'])

在您将其编辑为与特定文件匹配后,上面的内容将打印到终端上与特定'column_name_of_interest'匹配的所有值

一次处理许多列是很正常的,因此,将整行打包到单个对象(可通过列名寻址)的字典方法以后可能会非常方便

相关问题 更多 >