Die Funktion to_excel von Pandas generiert einen unerwarteten TypeError

13

Ich habe ein Wörterbuch mit Pandas-Datenrahmen erstellt:

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

Ich d[k]gehe also davon aus, dass dies ein korrekter Pandas-Datenrahmen ist.

Dann

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

Dann habe ich den Fehler:

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

Ich benutze Python 3.7, Pandas 0.25.3.

Update : Wenn ich ersetzen to_exceldurch to_csv, der Code perfekt läuft.

mommomonthewind
quelle
1
was ist file_name? ist es eine Schnur?
Quang Hoang
Ja, so ist es. Nur so etwas wie'/data/myfile.xlsx'
mommomonthewind
Was passiert, wenn Sie es versuchen d[k].to_excel(str(filename))?
Quang Hoang
Gleicher Fehler. Ich glaube nicht, dass das Problem auf dem liegt file_name. Ich habe überprüft und bin mir ziemlich sicher, dass es sich um einen gültigen Dateinamen handelt.
Mommomonthewind
Ich habe den gleichen Fehler mit Openpyxl: 3.0.2 pandas 0.25.3 Python 3.8.1 (tags / v3.8.1: 1b293b6, 18. Dezember 2019, 23:11:46) [MSC v.1916 64-Bit (AMD64)] entfernt openpyxl 3.0.2 und das Upgrade von openpyxl auf 3.0.3 haben das Problem behoben, wie andere berichten. Vielen Dank. Eine Sache, die ich hinzufügen möchte: Der Fehler openpyxl 3.0.2 hat die * .xlsx-Datei, an die sie angehängt wurde, beschädigt und sie für Excel unlesbar und nicht wiederherstellbar gemacht.
user39678

Antworten:

37

Ich habe das gleiche Problem mit openpyxl=3.0.2,

Beziehen Sie sich auf diese Antwort , ich rolle openpyxl zurück zu 3.0.1 (conda oder pip) und es funktioniert.

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

oder

>>> pip uninstall openpyxl
>>> pip install openpyxl==3.0.1
Animeta
quelle
1
Verfolgt hier: bitbucket.org/openpyxl/openpyxl/issues/1396/…
Shaheed Haque
Dieses Problem wurde in openpyxl 3.0.3 behoben.
Zeeks