读取csv文件中的行

时间:2017-10-16 00:22:04

标签: python

我有一个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]

然而,对于年龄,我计划获得每年的平均年龄。但我不知道在这种情况下如何。

2 个答案:

答案 0 :(得分:1)

您已打开文件,并逐行读取。当您引用row[0]row[1]时,您将引用每行的第一个和第二个字符。在这种情况下,它恰好是20作为一年的一部分。

您需要再多花一步,将文件解释为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)