【发布时间】:2021-11-13 19:22:55
【问题描述】:
如何使用带有列标题和索引值的 openpyxl 将 pandas **多索引数据框 ** 的结果导出到 excel 中?
我假设我需要在 dataframe_to_rows() 方法中设置 index=True。但是,当我这样做时,它会抛出一个 ValueError:说明它无法将 IndexLabel 值转换为 excel。例如:
ValueError: 无法将 ('Elf', 'Elrond') 转换为 Excel
我希望加载到 excel 中的内容与此类似:
我当前的代码
import openpyxl
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from pathlib import Path
multi_df = df.set_index(['Film', 'Chapter', 'Race', 'Character']).sort_index()
subset_df = multi_df.loc[('The Fellowship Of The Ring', '01: Prologue'), :]
# Read in TEMPLATE file from which a copy of the Template will be populated
outfile = 'TEST_Pivot2XL_TEMPLATE.xlsx'
template_filename = 'YYMMDD-YYMMDD_LOTR_TEMPLATE.xlsx'
wb = openpyxl.load_workbook(Path(Path.cwd() / "ReportFiles" / "Summary" / str(template_filename)))
ws = wb["myPivot"]
for r in dataframe_to_rows(subset_df, index=True, header=True):
ws.append(r)
wb.save(file)
注意:我有一个现有的 excel 模板文件,其中包含一个标题为“myPivot”的空工作表,我想将我的数据透视表写入其中。
我使用的数据集在这里: https://www.kaggle.com/mokosan/lord-of-the-rings-character-data?select=WordsByCharacter.csv
【问题讨论】:
标签: python excel pandas openpyxl multi-index