【问题标题】:Automatically create dataframe for each folder自动为每个文件夹创建数据框
【发布时间】:2016-09-21 21:49:51
【问题描述】:

每个文件夹都有一个 csv 用于一年中的每个月(1.csv、2.csv、3.csv 等),脚本创建一个数据框,将所有 12 个 csv 的第 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()

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

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()

【问题讨论】:

    标签: python excel csv pandas


    【解决方案1】:

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

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 2018-03-12
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多