Pandas: no se puede escribir al archivo de excel

Probando este ejemplo desde la documentación.

writer = ExcelWriter('output.xlsx') df1.to_excel(writer,'Sheet1') df2.to_excel(writer,'Sheet2') writer.save() 

Descubrí que no puedo escribir en un archivo de Excel con el error

 TypeError: copy() got an unexpected keyword argument 'font' 

Estoy usando Panda 0.16 en un Mac Pro.

EDITAR: escribir en un archivo xls funcionó bien. No insisto en tener un archivo xlsx, solo me pregunto por qué no funciona.

Para una solución rápida reemplazar este

 xcell.style = xcell.style.copy(**style_kwargs) 

con

 pass 

En pandas / io / excel.py línea 778.

openpyxl actualizó su api y los pandas también deben actualizarse para que sean compatibles con openpyxl.

Según su documentación , los pandas dependen

en versión openpyxl 1.6.1 o superior, pero inferior a 2.0.0

La última versión de openpyxl inferior a 2.0.0 es la versión 1.8.6, simplemente debe eliminar su versión actual de openpyxl y ejecutar:

 pip install openpyxl==1.8.6 

Si estás usando pip, o encuentra una forma equivalente de instalar esta versión específica.

Si no le importa si los encabezados tienen bordes alrededor y una fuente en negrita, y no desea restringir la versión de openpyxl, la forma más rápida es sobrescribir el diccionario de estilo de header_style para que sea None .

Si también tiene fechas o tiempos de fecha, también debe establecer explícitamente los formatos de date y date y datetime del libro de trabajo en None :

 from datetime import datetime import pandas as pd pd.core.format.header_style = None # <--- Workaround for header formatting dt = datetime.now() d = datetime.date(datetime.now()) df1 = pd.DataFrame([{'c1': 'alpha', 'c2': 1}, {'c1': 'beta', 'c2': 2}]) df2 = pd.DataFrame([{'c1': dt, 'c2': d}, {'c1': dt, 'c2': d}]) with pd.ExcelWriter('output.xlsx') as writer: writer.date_format = None # <--- Workaround for date formatting writer.datetime_format = None # <--- this one for datetime df1.to_excel(writer,'Sheet1') df2.to_excel(writer,'Sheet2') 

No está claro por qué los argumentos de palabras clave nunca llegan a través del envoltorio de eliminación de openpyxl ... pero no lo hacen. Además, si está formateando cualquier otra celda, use la nueva API de openpyxl .

Todos estos problemas desaparecen si tienes Anaconda, por cierto.

Una actualización para los pandas debería slove esto.

 pip install -U pandas 

Funciona para pandas version 0.17+