我有一个csv文件,其数据与此类似:
Year Age
2001 58
2006 52
2006 12
2001 50
2012 59
2017 46
所以我想将这两行提取到两个不同的列表中。
with open('age.csv', 'r') as files:
next(files) # skip header
for row in file_path:
years = row[0]
return years, average_age
但这只会给我20,20,20,这是我不希望它展示的东西。
所以我可以这样:
years = [2001, 2006, 2006, 2001, blabla]
然而,对于年龄,我计划获得每年的平均年龄。但我不知道在这种情况下如何。
答案 0 :(得分:1)
您已打开文件,并逐行读取。当您引用row[0]
和row[1]
时,您将引用每行的第一个和第二个字符。在这种情况下,它恰好是2
和0
作为一年的一部分。
您需要再多花一步,将文件解释为CSV文件,而不仅仅是一系列行。阅读Python's core CSV library的文档应该有所帮助。同时,这里有一段代码片段可能会启动您的流程:
>>> import csv
>>> with open('eggs.csv', newline='') as csvfile:
... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
... for row in spamreader:
... print(', '.join(row))
此外,通过您的实现,看起来您正在迭代整个文件,不断读取第一个和第二个字符,最后返回只是最后一行。这似乎是一个可能的错误。
答案 1 :(得分:0)
您需要拆分并剥离字符串。
with open('age.csv', 'r') as f:
next(f) # skip header
list_year = []
list_age = []
for row in f:
year, age = (s.strip() for s in row.split(','))
list_year.append(year)
list_age.append(age)
return (list_year, list_age)