在 Python 中循环浏览数据帧列表,并将每个 DF 放入不同的 Excel 工作表中



我有一个包含近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)

但这引发了以下错误: "'数据帧'对象是可变的,因此无法对其进行哈希处理">

任何帮助将不胜感激。

问题出在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)

或者,这篇文章(如何使用 Pandas 在现有 excel 文件中保存新工作表?(介绍如何使用pd.ExcelWriter将新工作表添加到现有 Excel 文件中。

只是为了解释这个错误:由于sheet_name需要一个字符串,而你给它一个不同的对象,pandas 将尝试对对象进行哈希处理以获得它的唯一字符串表示形式。但是,由于数据帧是可变的 - 您可以更改其中的值,与元组不同 - 它们无法进行哈希处理。有关为什么可哈希对象必须是不可变的更详细说明,请参阅这篇文章。

最新更新