如何将数据帧的字典写到Pandas中的一个excel文件中?键是工作表名称,值是数据框

时间:2018-08-05 18:00:18

标签: python excel pandas dataframe

尝试读取较大的excel文件(.xlsx)并将其某些选项卡/表格写入较小的excel文件时,我遇到了很多麻烦。

在一个类中,我得到了数据帧的字典。关键是数据框来自的相应工作表/标签,键入字符串。该值是实际的数据框,其所有原始列都为DataFrame。在此类中,我从原始excel文件中提取某些数据框。

提取选定的数据框后,我可以打印出key:value对,一切看起来都很好。但是,我相信我的真正问题是将实际数据写入1个excel文件。我只得到第一个数据框,没有它来自的工作表名称(它成为默认的“ Sheet1”),而没有其他内容。

以下是将我的字典写到Excel文件中的代码:

 def frames_to_excel(self, df_dict, path):
    """Write dictionary of dataframes to separate sheets, within 
        1 file."""
    writer = pd.ExcelWriter(path, engine='xlsxwriter')

    for tab_name, dframe in df_dict.items():
        dframe.to_excel(writer, sheet_name=tab_name)

    writer.save() 

-“路径”是将整个字典写入xlsx文件的选择输出路径。 -“ df_dict”是数据帧的字典。

1 个答案:

答案 0 :(得分:0)

我很困惑。我的错误根本不在我发布的代码中,也不是解析原始excel文件中数据的任何类。问题是这行代码:

 excel_path = re.sub(r"(?i)original|_original", "_custom", os.path.basename(excel_path))
  • 通过执行os库中的basename函数,我只使用了文件名,而不是整个完整路径:

    writer = pd.ExcelWriter(excel_path,engine ='xlsxwriter')

-因此,我没有将正确的数据写入完整路径,并且大约在5天前,我正在查看程序输出中的旧数据。谢谢大家的帮助。

修复(使用您期望的正确完整路径):

excel_path = re.sub(r"(?i)original|_original", "_custom", excel_path)