Функція to_excel панд генерує несподіваний TypeError


13

Я створив словник даних фреймів панд:

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

Тож я припускаю, що d[k]це правильна рамка даних панд.

Тоді

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

Тоді у мене є помилка:

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

Я використовую Python 3.7, панди 0.25.3.

Оновлення : якщо я заміню to_excelна to_csvкод працює відмінно.


1
що таке file_name? це струна?
Куанг Хоанг

Так. Щось на кшталт'/data/myfile.xlsx'
mommomonthewind

що станеться, якщо спробувати d[k].to_excel(str(filename))?
Куанг Хоанг

Те саме питання. Я не думаю, що проблема полягає в тому, що стосується file_name. Я перевірив і я впевнений, що це дійсне ім'я файлу.
mommomonthewind

Я отримав таку ж помилку, використовуючи Openpyxl: 3.0.2 панди 0.25.3 Python 3.8.1 (теги / v3.8.1: 1b293b6, 18 грудня 2019, 23:11:46) [MSC v.1916 64 біт (AMD64)] Видалення openpyxl 3.0.2 та оновлення openpyxl до 3.0.3 виправили проблему, як повідомляють інші. Дякую. Додам ще одне: помилка openpyxl 3.0.2 пошкодила файл * .xlsx, до якого він додався, зробивши його нечитабельним та не піддається відновлення в Excel.
користувач39678

Відповіді:


37

У мене така ж проблема openpyxl=3.0.2,

Звертаючись до цієї відповіді , я повертаю openpyxl назад до 3.0.1 (conda або pip), і це працює.

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

або

>>> pip uninstall openpyxl
>>> pip install openpyxl==3.0.1


Ця проблема була виправлена ​​у openpyxl 3.0.3.
zeeks
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.