2016-07-11 8 views
1

Начну с изображением на это объясняет четко проблему с экспортом multindexes с пандами нативного экспорта и xlwingsxlwings vs pandas native export с несколькими индексами dataframes: как смириться?

enter image description here

по существу, я хотел бы, чтобы «Pandas родной» результат [в мультииндексных правильно экспортируемый to excel] сделано с Xlwings, потому что у меня есть множество других функций, которые могут делать XlWings, а другие не могут (нет, даже если вы используете ExcelWriter и тому подобное, потому что мне нужно очистить лист, и у меня есть вещь не python, вставленная в тот же лист который также будет очищен при инициализации)

код используется:

import pandas as pd 
import numpy as np 
import xlwings as xw 
import os 

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], 
      ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] 

tuples = list(zip(*arrays)) 
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
s = pd.DataFrame(np.random.randn(8, 8), index=index).transpose() 
print(s) 

# EXPORT 

filename = 'format_excel_export.xlsx' 
s.to_excel(filename) 

outpath = os.path.join(os.path.abspath(os.path.dirname(__file__)), filename) 
os.path.sep = r'/' 
wb = xw.Workbook(outpath) 

xw.Range('Sheet1', 'A13').value = s 

ответ

2

Вы можете реализовать пользовательский конвертер, который форматирует его так, что панды действительно, см here.

Однако, начиная с v0.7.2, xlwings еще не поддерживает жирные шрифты, объединяющие ячейки и границы ячеек. Вы можете обойти это, возвращаясь к pywin32 (в Windows), см. here.

По сути, ваш пользовательский конвертер должен переопределить метод write_value, см. here.

Имеет смысл построить это в библиотеке в какой-то момент, поэтому я открыл проблему, см. here.