我的Jupyter笔记本中有一个数据帧,我可以用pandas ExcelWriter成功地将其写入Excel文件,但我宁愿将数据帧拆分为更小的数据帧(基于其索引(,然后循环遍历它们,将每个数据帧写入一个Excel文件中的不同工作表。这在语法上似乎是正确的,但我的代码单元运行时从未完成:
path = r'/root/notebooks/my_file.xlsx'
writer = ExcelWriter(path)
sheets = df.index.unique().tolist()
for sheet in sheets:
df.loc[sheet].to_excel(writer, sheet_name=sheet, index=False)
writer.save()
我尝试了几种不同的方法,但没有成功。我是不是错过了一些简单的东西?
如果没有错误消息,很难确定系统中的问题(正如您所说,您有一个无限循环(。您可以检查数据集的大小,因为每个excel表只放一行。如果你有很多排,那么你就会有那么多床单。
然而,我用自己的数据集尝试了您的代码,但仍有一些错误可以修复。
path = 'raw/test_so.xlsx'
writer = pd.ExcelWriter(path)
sheets = df.index.unique().tolist()
for sheet in sheets:
df.loc[[sheet]].to_excel(writer, sheet_name=str(sheet), index=False)
writer.save()
请参阅每张表的df.loc[[sheet]]
,以仍然获得excel上的数据帧格式(带列标题(。
如果数据帧索引是整数,请确保执行sheet_name=str(sheet)
,因为它不能接受工作表名称的整数。