Funkcja to_excel pand generuje nieoczekiwany błąd typu

13

Stworzyłem słownik ramki danych pand:

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

Zakładam więc, że d[k]jest to poprawna ramka danych pand.

Następnie

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

Mam wtedy błąd:

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

Używam Python 3.7, pandy 0.25.3.

Aktualizacja : jeśli zastąpić to_excelprzez to_csvkod działa doskonale.

mommomonthewind
źródło
1
co jest file_name? czy to jest struna?
Quang Hoang
Tak to jest. Po prostu coś w stylu'/data/myfile.xlsx'
mommomonthewind
co się stanie, jeśli spróbujesz d[k].to_excel(str(filename))?
Quang Hoang
Ten sam problem. Nie sądzę, że problem leży po stronie file_name. Sprawdziłem i jestem całkiem pewien, że jest to poprawna nazwa pliku.
mommomonthewind
Mam ten sam błąd przy użyciu Openpyxl: 3.0.2 pandy 0.25.3 Python 3.8.1 (tags / v3.8.1: 1b293b6, 18 grudnia 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] Usuwanie Openpyxl 3.0.2 i aktualizacja openpyxl do 3.0.3 naprawiły problem, jak zgłaszają inni. Dziękuję Ci. Dodam jeszcze jedną rzecz: błąd openpyxl 3.0.2 spowodował uszkodzenie pliku * .xlsx, do którego był dołączany, przez co stał się nieczytelny i niemożliwy do odzyskania przez program Excel.
user39678

Odpowiedzi:

37

Mam ten sam problem z openpyxl=3.0.2,

Zapoznaj się z tą odpowiedzią , przywracam openpyxl z powrotem do 3.0.1 (conda lub pip) i to działa.

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

lub

>>> pip uninstall openpyxl
>>> pip install openpyxl==3.0.1
Animeta
źródło
1
Śledzone tutaj: bitbucket.org/openpyxl/openpyxl/issues/1396/…
Shaheed Haque
Ten problem został rozwiązany w openpyxl 3.0.3.
Zeeks