循环浏览python中的数据帧列表,并将每个df写入不同的excel工作表

循环浏览python中的数据帧列表,并将每个df写入不同的excel工作表,python,excel,pandas,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) 但这引发了以下错误: “DataFra

我有一个大约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”对象是可变的,因此不能对其进行哈希运算


任何帮助都将不胜感激。

问题在于
sheet\u name=i
sheet\u name
参数需要一个字符串,但您正在将试图输出到Excel的整个数据帧传递给它

最简单的解决方法可能是省略参数并使用默认值(
Sheet1
Sheet2
,等等)。或者,您可以使用
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)
或者,本文()将介绍如何使用
pd.ExcelWriter
将新工作表添加到现有Excel文件中


只是为了解释错误:由于
sheet\u name
需要一个字符串,而您给它一个不同的对象,pandas将尝试散列该对象,以获得该对象的唯一字符串表示形式。然而,由于数据帧是可变的——您可以更改其中的值,这与元组不同——它们不能被散列。有关哈希对象必须不可变的更详细解释,请参阅。

非常感谢您的解释。事实上,我收到以下错误:“int类型的对象没有len()”更具体:“文件”C:\ProgramData\Anaconda3\lib\site packages\xlsxwriter\workbook.py”,第740行,如果len(sheetname)>31,请检查sheetname:“我的df(升级1)的长度是3978996。因此,我想它适合多张excel表格。我还尝试用代码“j.to\u excel(“result\u promotion1.xlsx”,index=False,sheet\u name=str(I))”更改表格名称的类型,但似乎每次迭代都会覆盖该表格。因此,最终excel只有一张带有最终拆分数据框的工作表。