在python中循环浏览数据框列表,并将每个df放入不同的Excel工作表中

时间:2019-09-01 05:56:59

标签: python excel pandas

我有一个将近400万条记录的大型数据集。我想在excel中导出它们,但是由于excel文件的每个工作表只能包含100万条记录,因此我决定拆分数据框并将每个子集放入excel工作表中。 我使用了以下代码:

df_split = np.array_split(promotion1, 4)
for i in df_split:
i.to_excel("result_promotion1.xlsx", index = False, sheet_name = i)

但是引发了以下错误: “'DataFrame'对象是可变的,因此不能被散列”

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题出在sheet_name = i上。 sheet_name参数需要一个字符串,但是您正在将要输出到Excel的整个数据帧传递给它。

最简单的解决方法可能是忽略参数并使用默认值(Sheet1Sheet2等)。另外,您可以使用enumerate轻松给数据框编号并将它们分成几个excel文件,如下所示:

df_split = np.array_split(promotion1, 4)
for index, i in enumerate(df_split):
    filename = "result_promotion" + str(index) + ".xlsx"
    i.to_excel(filename, index = False)

或者,这篇文章(How to save a new sheet in an existing excel file, using Pandas?)介绍了如何使用pd.ExcelWriter将新工作表添加到现有Excel文件中。

仅解释错误:由于sheet_name需要一个字符串,而您给它一个不同的对象,因此熊猫会尝试对对象进行哈希处理以获取其唯一的字符串表示形式。但是,由于DataFrames是可变的-与元组不同,您可以在其中更改值-无法对它们进行哈希处理。有关为何可哈希对象必须不可变的详细说明,请参见this post