在Python中使用csv.DictReader函数时,是否可以读取.csv文件的某些行?
例如,如果您只想加载.csv文件的第10至20行,而不先加载整个数据集。
我有几个.csv文件,每个文件有2亿行,其中包含10个field_name数据条目-因此,为什么我使用DictReader而不是简单的csv.read()。
这是我当前方法的一个简单示例:
import csv
from tqdm import tqdm
field_names = ['A','B','C']
IDs = []
with open(file_1) as f:
reader = csv.DictReader(f,field_names,delimiter=',')
row_count = 0
for row in tqdm(reader):
row_count+=1
ID = row['A']
if ID not in IDs == True:
IDs.append(ID)
您可以看到为什么要遍历2亿行会变得很慢,而循环中的任何其他条件或处理只会大大降低它的速度。
因此有意义的是遍历几行行,然后对它们进行多线程处理以节省时间。
我考虑过的事情:
非常感谢!
答案 0 :(得分:0)
您可以使用sudo lsof -i:80
生成行索引,并使用enumerate
在索引到达目标时循环:
break
请注意,您可以将IDs = set()
for i, row in enumerate(reader):
if i > 9:
IDs.add(row['A'])
elif i > 19:
break
设置为集合而不是列表,以提高获取唯一ID的效率。