![](/img/trans.png)
[英]WITHOUT using Pandas, how do I analyze CSV data and only extract certain values from certain columns and rows of my CSV file?
[英]How to get specific columns in a certain range from a csv file without using pandas
由于某种原因,pandas模块不起作用,我必须找到另一种方式来读取(大)csv文件,并在一定范围内(例如前1000行)使用特定于输出的列。 我有读取整个csv文件的代码,但是我还没有找到只显示特定列的方法。
任何帮助深表感谢!
import csv
fileObj = open('apartment-data-all-4-xaver.2018.csv')
csvReader = csv.reader( fileObj )
for row in csvReader:
print row
fileObj.close()
使用csv dictreader,然后过滤掉特定的行和列
import csv
data = []
with open('names.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data.append(row)
colnames = ['col1', 'col2']
for i in range(1000):
print(data[i][colnames[0]], data[i][colnames[1]])
我创建了一个包含以下内容的小型csv文件:
first,second,third
11,12,13
21,22,23
31,32,33
41,42,43
您可以使用以下帮助程序函数,该函数使用来自collections模块的namedtuple,并生成允许您访问诸如属性之类的列的对象:
import csv
from collections import namedtuple
def get_first_n_lines(file_name, n):
with open(file_name) as file_obj:
csv_reader = csv.reader(file_obj)
header = next(csv_reader)
Tuple = namedtuple('Tuple', header)
for i, row in enumerate(csv_reader, start=1):
yield Tuple(*row)
if i >= n: break
如果要打印第一行和第三列,每行n = 3行,请使用以下方法(Python 3.6 +):
for line in get_first_n_lines(file_name='csv_file.csv', n=3):
print(f'{line.first}, {line.third}')
或像这样(Python 3.0-3.5):
for line in get_first_n_lines(file_name='csv_file.csv', n=3):
print('{}, {}'.format(line.first, line.third))
输出:
11, 13
21, 23
31, 33
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.