在csv文件名列表中循环

时间:2016-03-23 20:02:09

标签: python csv pandas dataframe

我在下面的代码中遇到了一些问题。代码的目的是获取每个列表中的列表列表,其中包含一系列csv文件。我想遍历每个列表(一次一个)并仅输入相应列表中的csv文件。

我当前的代码正在累积所有数据,而不是每次循环时从头开始。第一个循环,使用第0个索引中的所有csv文件,第二个循环,使用第一个索引中的所有csv文件 - 但不要累积

path = "C:/DataFolder/"
allFiles = glob.glob(path + "/*.csv")
fileChunks = [['2003.csv','2004.csv','2005.csv'],['2006.csv','2007.csv','2008.csv']]


for i in range(len(fileChunks)):
"""move empty dataframe here"""

df = pd.DataFrame()

    for file_ in fileChunks[i]:
        df_temp = pd.read_csv(file_, index_col = None, names = names, parse_dates=True)
        df = df.append(df_temp)

注意:fileChunks派生自一个函数,它会像上面的例子那样吐出一个列表列表

对文档的任何帮助或指出我的错误都会很棒 - 我想从中学习。谢谢。

EDIT 似乎将空数据帧移动到第一个for循环中。

1 个答案:

答案 0 :(得分:2)

这应该会删除您的文件并使用列表推导单独阅读,然后使用df = pd.concat([pd.read_csv(file_, index_col=None, names=names, parse_dates=True) for chunk in fileChunks for file_ in chunk], ignore_index=True) >>> [file_ for chunk in fileChunks for file_ in chunk] ['2003.csv', '2004.csv', '2005.csv', '2006.csv', '2007.csv', '2008.csv'] 将它们全部加入。这比将每个读取附加到不断增长的数据帧要有效得多。

sortResultsByDate