utils.dataframe.py, dataframe_to_rows() problem with multiindex on rows
There seems to be a problem converting row multiindex to list for worksheet row
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl import Workbook
from pandas import DataFrame as df
from pandas import MultiIndex as mi
# create a sample data frame with multi index
keys_1 = list('abc')
keys_2 = ('one','two')
keys = [(k1, k2) for k1 in keys_1 for k2 in keys_2]
ind = mi.from_tuples(keys, names=['lvl_1', 'lvl_2'])
data_frame = df(index=ind)
# let's try to add rows to worksheet as described on
# https://openpyxl.readthedocs.io/en/stable/pandas.html
wb = Workbook()
ws = wb.active
for r in dataframe_to_rows(data_frame, index=True, header=True):
ws.append(r)
# ValueError: Cannot convert ('a', 'one') to Excel
Here is my attempt at solving this in utils/dataframe.py, dataframe_to_rows()
starting from line 53
for idx, v in enumerate(df.index):
row = [data[j][idx] for j in range(ncols)]
if index:
# multilevel lindex will be a tuple
try:
row = list(v) + row
except TypeError:
# while single level index will give ints or strings
row = [v] + row
yield row