Python多个CSV文件以追加的方式合并到一张已存在表的多个sheet工作表中

这里写自定义目录标题

  • 将多个dataframe合并到已知excel表中个多个sheet中
    • 方法一:由openpyxl作为ExcelWriter的engine
    • 方法二:设置ExcelWriter的写入模型,以追加的方式写入

将多个dataframe合并到已知excel表中个多个sheet中

dataframe可以由读取csv文件、excel文件生成,这里以读取csv文件为例,代码如下:

	writer = pd.ExcelWriter(r'D:\sdf\df\test.xlsx')
    data1 = pd.read_csv(r"D:\df\csv_excel\current_safe_sum.csv",sep = '\t')
    data2 = pd.read_csv(r"D:\asdf\csv_excel\current_dfd.csv",sep = '\t')
    data1.to_excel(writer, sheet_name='2019-10-01',index = False)
    data2.to_excel(writer, sheet_name='2019-10-02',index = False)
    writer.save()

上述代码会将data1和data2两个datafram分别合并到一张已存在表test.xlsx两个sheet中,但会覆盖excel表中原来是sheet,如何不覆盖原来的sheet,有两种方式实现。

方法一:由openpyxl作为ExcelWriter的engine

将ExcelWriter的engine设置为openpyxl,通过openpyxl模块的load_workbook方法加载excel表,即可实现追加

    writer = pd.ExcelWriter(r'D:\ziyouguodu\csv_excel\test.xlsx',engine= 'openpyxl')
    data1 = pd.read_csv(r"D:\ziyouguodu\csv_excel\current_safe_sum.csv",sep = '\t')
    # data2 = pd.read_csv(r"D:\ziyouguodu\csv_excel\current_wuxiaxian_sum.csv",sep = '\t')

    book = load_workbook(writer.path)
    writer.book = book
    data1.to_excel(excel_writer=writer, sheet_name="2019-10-03",index = False)

    # data1.to_excel(writer, sheet_name='2019-04-01',index = False)
    # data2.to_excel(writer, sheet_name='2019-04-02',index = False)
    writer.save()

方法二:设置ExcelWriter的写入模型,以追加的方式写入

通过查看pandas的api:pandas0.25.2的aip,可以很容易发现,可以直接刚跟写入方式为追加的方式,来实现向已存在excel表中追加sheet.

    writer = pd.ExcelWriter(r'D:\sdf\df\test.xlsx',mode='a')
    data1 = pd.read_csv(r"D:\df\csv_excel\current_safe_sum.csv", sep='\t')
    data2 = pd.read_csv(r"D:\asdf\csv_excel\current_dfd.csv", sep='\t')
    data1.to_excel(writer, sheet_name='2019-10-04', index=False)
    data2.to_excel(writer, sheet_name='2019-10-05', index=False)
    writer.save()

由此可知,阅读pandas原文的api的重要性,太重要啦!目前googel还没有发现有这种解决方式。

你可能感兴趣的:(pandas学习)