这是我的问题。
我有很多带有大量数据的 csv,我想提取年份函数中的几行。将每一年分开对我来说很重要,所以我决定为每一年创建各种列表/字典并提取我感兴趣的数据。
问题是每个文件的年数不同,手动创建列表 /dict 会太长。
在我的代码中,我提取了最小和最大年份,现在我想创建一个循环来重命名我拥有的每一年的列表/字典。
我不知道我可以使用哪个功能..也许我只是弄错了,我的逻辑现在不好?这是我提取文件中的年数的方法。
import csv
with open('file.csv') as rawFile:
reader = csv.DictReader(rawFile, delimiter=';')
firstDate = next(reader)["date"]
currentYear = firstDate.split('/')[-1]
minYear=int(currentYear)
for row in reader :
date=row["date"]
maxiYear=int(date.split('/')[-1])
nbList=maxiYear-minYear
print(nbList)
非常感谢您的帮助,对不起我的英语,很久没有说这种语言了。
编辑:我的表结构:
日期 | Q |
---|---|
01/01/1800 | 120.5 |
02/02/1800 | 150.2 |
03/02/1800 | 85.3 |
04/02/1800 | 75.5 |
答案 0 :(得分:0)
我们创建了一个以年份为键、对应行列表作为值的字典。
我们可以使用 collections.defaultdict 当我们访问尚不存在的密钥时,这将动态创建空列表。
我们只需要对行进行迭代并将每一行附加到其年份的列表中:
import csv
from collections import defaultdict
with open('file.csv') as rawFile:
reader = csv.DictReader(rawFile, delimiter=';')
rows_by_year = defaultdict(list)
for row in reader:
year = row["date"].split('/')[-1]
rows_by_year[year].append(row)