Я пытаюсь написать pandas DataFrame
в файл .xlsx
, где разные числовые столбцы будут иметь разные форматы. Например, некоторые отображали бы только два десятичных знака, некоторые не отображали бы ни одного, некоторые были бы отформатированы как проценты с символом «%» и т. д.
Я заметил, что DataFrame.to_html()
имеет параметр formatters
, который позволяет делать именно это, сопоставляя разные форматы с разными столбцами. Однако в методе DataFrame.to_excel()
нет аналогичного параметра. Самое большее, что у нас есть, это float_format
, глобальное для всех чисел.
Я прочитал много сообщений SO, которые хотя бы частично связаны с моим вопросом, например:
- Используйте старый механизм
openpyxl
для применения форматов к одной ячейке за раз< /а>. Это подход, с которым я добился наибольшего успеха. Но это означает написание циклов для применения форматов к ячейкам, запоминание смещений и т. д. - Отображение процентов путем преобразования самих данных таблицы в строки. Переход по пути изменения фактических данных вдохновил меня попробовать разобраться с форматированием десятичных знаков, вызвав
round()
для каждого столбца перед записью в Excel — это тоже работает, но я хотел бы избежать изменения данных. - Ассорти других, в основном о форматах даты
Существуют ли другие более удобные функции/свойства, связанные с Excel, в API pandas, которые могут помочь здесь, или что-то похожее на openpyxl
, или, возможно, какой-то способ указать метаданные формата вывода непосредственно для каждого столбца в DataFrame
, которые затем будут интерпретироваться нижестоящими различными выходы?