Функция 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, код работает отлично.

mommomonthewind
источник
1
что такое file_name? это строка?
Куанг Хоанг
Да, это так. Просто что-то вроде'/data/myfile.xlsx'
mommomonthewind
что будет, если ты попробуешь d[k].to_excel(str(filename))?
Куанг Хоанг
Та же проблема. Я не думаю, что проблема лежит на file_name. Я проверил и уверен, что это правильное имя файла.
mommomonthewind
Я получил ту же ошибку, используя Openpyxl: 3.0.2 pandas 0.25.3 Python 3.8.1 (tags / 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.
user39678

Ответы:

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
Animeta
источник
1
Отслеживается
Шахид Хак
Эта проблема была исправлена ​​в openpyxl 3.0.3.
Зикс