如何在 Python 中选择 CSV 文件的特定列

  • 本文关键字:文件 CSV 选择 Python python
  • 更新时间 :
  • 英文 :


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

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

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

你可以帮我吗?

list = [] 
with open(r'C:UsersDesktopmydoc.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)

您可以非常简单地使用pandas.read_csv()方法,如下所示:

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()

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

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

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

在您编辑它以匹配您的特定文件后,上述内容会将与您的特定'column_name_of_interest'匹配的所有值打印到终端。

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

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

数据.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])

最新更新