Pandas: невозможно записать в файл excel - программирование

Pandas: невозможно записать в файл excel

Попробуйте этот пример из документации

writer = ExcelWriter('output.xlsx')
df1.to_excel(writer,'Sheet1')
df2.to_excel(writer,'Sheet2')
writer.save()

Я узнал, что не могу записать файл excel с ошибкой

TypeError: copy() got an unexpected keyword argument 'font'

Я использую Panda 0.16 для Mac pro.

EDIT: запись в файл xls работала просто отлично. Я не настаиваю на наличии файла xlsx, просто задаюсь вопросом, почему он не работает.

4b9b3361

Ответ 1

Для быстрого решения замените это

xcell.style = xcell.style.copy(**style_kwargs)

с

pass

В pandas/io/excel.py строке 778.

openpyxl обновил свои api и pandas также необходимо обновить для поддержки openpyxl.

Ответ 2

В соответствии с их документацией pandas зависит

на openpyxl версии 1.6.1 или новее, но ниже 2.0.0

Последняя openpyxl версия ниже 2.0.0, являющаяся версией 1.8.6, вы должны просто удалить текущую версию openpyxl и запустить:

pip install openpyxl==1.8.6

если вы используете pip, или найдите эквивалентный способ установки этой конкретной версии.

Ответ 3

Если вам все равно, имеют ли заголовки границы вокруг них и полужирный шрифт, и вы не хотите ограничивать версию openpyxl, самый быстрый способ - заменить словарь header_style на None.

Если у вас также есть даты или даты, вы также должны явно указать форматы книг date и datetime на None:

from datetime import datetime
import pandas as pd
pd.core.format.header_style = None  # <--- Workaround for header formatting

dt = datetime.now()
d = datetime.date(datetime.now())
df1 = pd.DataFrame([{'c1': 'alpha', 'c2': 1}, {'c1': 'beta', 'c2': 2}])
df2 = pd.DataFrame([{'c1': dt, 'c2': d}, {'c1': dt, 'c2': d}])

with pd.ExcelWriter('output.xlsx') as writer:
    writer.date_format = None # <--- Workaround for date formatting
    writer.datetime_format = None  # <--- this one for datetime
    df1.to_excel(writer,'Sheet1')
    df2.to_excel(writer,'Sheet2')

Непонятно, почему аргументы ключевого слова никогда не попадают в оболочку outpyxl debrecation... но они этого не делают. Кроме того, если вы форматируете любые другие ячейки, используйте новый openpyxl api.

Все эти проблемы уходят, если у вас есть Anaconda, между прочим.

Ответ 4

Обновление до pandas должно означать это.

pip install -U pandas

Он работает для pandas версии 0.17+