我有一个包含大约42,000行和14列的csv。
其中一个字段为starttime
,其中包含2015-02-01 00:00:00+00
格式的日期和时间。 csv包含一周的数据。
csv已在starttime
字段中排序,第一行中最早的日期时间(标题之后)和最后一个日期时间。
我正在尝试编写一个批处理脚本,只要日期发生变化,就会将整个csv行的内容打印到我的控制台。由于csv包含一周的数据,我希望看到七行打印。
我的方法是解析第一行的starttime
一天并将其存储在列表中。然后,我想将每个后续行中starttime
的日期与列表中的starttime
项进行比较。如果列表中已存在该日期,请忽略该行。
当一天不匹配时,将其添加到列表中并从csv中生成行以便稍后打印。
到目前为止,我有这个:
day_holder = []
def new_date(reader):
for row in reader:
starttime = dateutil.parser.parse(row['starttime'])
if starttime.day not in day_holder:
day_holder.append(starttime.day)
yield row
else:
reader.next()
with open('the_csv.csv', 'r') as x:
reader = csv.DictReader(x)
for row in new_date(reader):
print ','.join(map(row.get, reader.fieldnames))
但它正在打印csv中的每一行并使我的机器崩溃。任何建议表示赞赏。