我正在尝试解析一个csv文件,并仅从特定列中提取数据。
范例csv:
ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |
我想只捕获特定的列,说ID
,Name
,Zip
和Phone
。
我看过的代码使我相信我可以通过其对应的编号来调用特定的列,即:Name
将对应于2并遍历每一行使用row[2]
会产生列2中的所有项目。只有它不能。
到目前为止,这是我所做的:
import sys, argparse, csv
from settings import *
# command arguments
parser = argparse.ArgumentParser(description='csv to postgres',\
fromfile_prefix_chars="@" )
parser.add_argument('file', help='csv file to import', action='store')
args = parser.parse_args()
csv_file = args.file
# open csv file
with open(csv_file, 'rb') as csvfile:
# get number of columns
for line in csvfile.readlines():
array = line.split(',')
first_item = array[0]
num_columns = len(array)
csvfile.seek(0)
reader = csv.reader(csvfile, delimiter=' ')
included_cols = [1, 2, 6, 7]
for row in reader:
content = list(row[i] for i in included_cols)
print content
并且我希望这只会打印出我想要的每一行的特定列,除非不是,我只会得到最后一列。
你会得到从这个代码的最后一列的唯一方法是,如果你不包括你的print语句中的for
循环。
这很可能是代码的结尾:
for row in reader:
content = list(row[i] for i in included_cols)
print content
你希望它是这样的:
for row in reader:
content = list(row[i] for i in included_cols)
print content
既然我们已经解决了你的错误,那么我想花时间向你介绍pandas模块。
Pandas在处理csv文件方面非常出色,以下代码将是你读取csv并将整列保存到变量中所需的全部:
import pandas as pd
df = pd.read_csv(csv_file)
saved_column = df.column_name #you can also use df['column_name']
因此,如果你想将列中的所有信息保存Names到变量中,则只需执行以下操作:
names = df.Names
这是一个很棒的模块,建议你研究一下。如果由于某种原因你的打印语句处于for
循环状态,并且仍然仅打印出最后一列,则不应该发生,但是请让我知道我的假设是否错误。你发布的代码有很多缩进错误,因此很难知道应该在哪里。希望这对你有所帮助!
示例CSV: 我试图只捕获特定的列,例如、、和。 我看到的代码使我相信我可以通过相应的编号调用特定的列,因此:将对应于,使用迭代每一行将产生第2列中的所有项。只是它没有。
问题内容: 我正在使用Python csv模块读取csv文件,每一行都像这样: 然后,我将row [0]转换为Unix时间,但是我想用刚为csv文件的每一行找到的Unix时间替换datetime 因此,我使用unixtime值创建了列表Y,但是接下来我该如何进行替换,以产生如下所示的输出: 问题答案: 每个只是一个。您可以就地对其进行修改,也可以使用要替换的值创建一个新列表: 如果要将其写回文件,
我有一个csv文件,如下所示: ... 我怎样才能在python中只读取列“AAA、DDD、FFF、GGG”并跳过标题?我想要的输出是一个元组列表,如下所示:[(1,4,3,20),(2,5,2,23),(4,6,1,22)]。我正在考虑稍后将这些数据写入SQLdatabase。 我参考了这篇文章:用csv模块从csv文件中读取特定的列?。但是我不认为这对我有什么帮助。因为我的. csv很大,有一
问题内容: 我有一个csv文件,看起来像这样: … 如何只读取python中的“ AAA,DDD,FFF,GGG”列并跳过标题?我想要的输出是一个看起来像这样的元组列表:[(1,4,3,20),(2,5,2,23),(4,6,1,22)]。我正在考虑稍后将这些数据写入SQLdatabase。 我提到了这篇文章:使用csv模块从csv文件中读取特定的列?。但是我认为这对我的情况没有帮助。由于我的.c
我有一个包含5个字段(列)的csv文件。在5列中,我只想读第二列和第四列,这是进一步处理所需的。现在我正在使用opencsv api的readAll()方法进行读取。通过使用这种方法,我必须处理所有列,以获得第二列和第四列的值。 有没有办法读取所需列的值,即从csv文件中读取第二个和第四个值? 这是正确的方法还是我应该使用其他方法?
我有以下格式的文件