您可以使用以下分组函数将行成批分组为100行:
from itertools import chain, islice
def grouper(iterable, n):
"grouper(ABCDE,2) => AB CD E"
iterable = iter(iterable)
while True:
yield chain([next(iterable)], islice(iterable, n-1))
即
csv_reader = csv.DictReader(csv_file)
for group in grouper(csv_reader, 100):
for row in group:
...
grouper函数在内存中最多存储一行。
如果批次不总是100行,则稍微更新。在这种情况下,我们只对具有相同时间戳的后续行进行分组:
csv_reader = csv.DictReader(csv_file)
for key, group in itertools.groupby(csv_reader, lambda row: row['time']):
for row in group:
...