La función to_excel de pandas genera un error de tipo inesperado

13

Creé un diccionario de marco de datos de pandas:

d[k] = pd.DataFrame(data=data[i])

Así que supongo que d[k]es un marco de datos de pandas correcto.

Entonces

for k in d.keys():
  d[k].to_excel (file_name)

Entonces tengo el error:

TypeError: got invalid input value of type <class 'xml.etree.ElementTree.Element'>, expected string or Element

Estoy usando Python 3.7, pandas 0.25.3.

Actualización : si lo reemplazo to_excelpor to_csv, el código se ejecuta perfectamente.

mommomonthewind
fuente
1
lo que es file_name? ¿Es una cuerda?
Quang Hoang
Sí lo es. Algo así como'/data/myfile.xlsx'
mommomonthewind
¿Qué pasa si lo intentas d[k].to_excel(str(filename))?
Quang Hoang el
Mismo problema. No creo que el problema radique en el file_name. Lo comprobé y estoy bastante seguro de que es un nombre de archivo válido.
mommomonthewind
Obtuve el mismo error al usar Openpyxl: 3.0.2 pandas 0.25.3 Python 3.8.1 (etiquetas / v3.8.1: 1b293b6, 18 de diciembre de 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] Eliminando openpyxl 3.0.2 y la actualización de openpyxl a 3.0.3 solucionó el problema, como otros informan. Gracias. Una cosa que agregaré: el error openpyxl 3.0.2 corrompió el archivo * .xlsx al que se estaba agregando, haciéndolo ilegible e irrecuperable por Excel.
user39678

Respuestas:

37

Tengo mismo problema con openpyxl=3.0.2,

Consulte esta respuesta , vuelvo a abrir openpyxl a 3.0.1 (conda o pip) y funciona.

>>> conda remove openpyxl
>>> conda install openpyxl==3.0.1

o

>>> pip uninstall openpyxl
>>> pip install openpyxl==3.0.1
Animeta
fuente
1
Seguimiento
Shaheed Haque
Este problema se ha solucionado en openpyxl 3.0.3.
zeeks