自动为每个文件夹创build数据框

每个文件夹在每年的每个月份都有一个csv(1.csv,2.csv,3.csv等),脚本为所有12个csv创build一个数据框,将第9列组合成一个名为concentrated.xlsx的xlsx表。 它的工作原理,但一次只能用于一个目录

 files = glob['2014/*.csv'] sorted_files = natsorted(files) def read_9th(fn): return pd.read_csv(fn, usecols=[9], names=headers) big_df = pd.concat([read_9th(fn) for fn in sorted_files], axis=1) writer = pd.ExcelWriter('concentrated.xlsx', engine='openpyxl') big_df.to_excel(writer,'2014') writer.save() 

是否有可能为每个目录自动创build一个数据框,而不必像这样为每个文件夹手动创build一个:

 files14 = glob['2014/*.csv'] files15 = glob['2015/*.csv'] sorted_files14 = natsorted(files14) sorted_files15 = natsorted(files15) def read_9th(fn): return pd.read_csv(fn, usecols=[9], names=headers) big_df = pd.concat([read_9th(fn) for fn in sorted_files14], axis=1) big_df1 = pd.concat([read_9th(fn) for fn in sorted_files15], axis=1) writer = pd.ExcelWriter('concentrated.xlsx', engine='openpyxl') big_df.to_excel(writer,'2014') big_df1.to_excel(writer,'2015') writer.save() 

如果您得到想要处理的文件夹的列表,例如

 folders = os.listdir('.') # or folders = ['2014', '2015', '2016'] 

你可以做这样的事情:

 writer = pd.ExcelWriter('concentrated.xlsx', engine='openpyxl') for folder in folders: files = glob('%s/*.csv' % folder) sorted_files = natsorted(files) big_df = pd.concat([read_9th(fn) for fn in sorted_files], axis=1) big_df.to_excel(writer, folder) writer.save()