Есть ли способ экспортировать фрейм данных pandas в таблицу Excel, сохраняя формат плавающего фрейма? - PullRequest
0 голосов
/ 02 августа 2020

Моя цель - экспортировать pandas фрейм данных в файл Excel, сохраняя формат фрейма данных. Вот фрагмент кода для создания и форматирования фрейма данных:

import pandas as pd
import os
import numpy as np

df = pd.DataFrame({'A': np.linspace(100000, 1000, 5), 'B': 'line'})
df = pd.concat([df, pd.DataFrame(np.random.randn(5, 4), columns=list('CDEF'))],axis=1)

path = os.path.join(os.path.expanduser("~"), "Desktop", "styled.xlsx")
        
writer = pd.ExcelWriter(path, engine='xlsxwriter')
df.to_excel(writer, sheet_name='sheet',header=True, index=False, startrow=0, startcol=0)

my_format = writer.book.add_format({'align': 'center',
                                               'num_format': '#,##0.00', 
                                               'bg_color': '#FFFFFF', 
                                               'fg_color': '#000000'})
for col in (0, 6):
    writer.sheets['sheet'].set_column(col, col, None, my_format)

writer.save()

Это фрейм данных в записной книжке Jupyter (это именно то, что я хотел увидеть в листе Excel): Фрейм данных с форматированием с плавающей запятой

Но это файл Excel, который я получил, когда запустил приведенный выше код: Вывод листа Excel с неформатированными числами с плавающей запятой

Кто-нибудь может помочь получить желаемый формат фрейма данных в файл Excel? Я уже пробовал сделать это с помощью openpyxl, но кажется, что он не форматирует область, в которой находится фрейм данных, а только остальную часть листа Excel.

1 Ответ

1 голос
/ 02 августа 2020

Я думаю, вы можете использовать для этого ExcelWriter:

excel_writer = pd.ExcelWriter('/home/your_excel.xlsx', engine = 'xlsxwriter')
df.to_excel(excel_writer, index=False, sheet_name='mysheet')
book  = excel_writer.book
sheet = excel_writer.sheets['mysheet']
excel_format = book.add_format({'num_format': '0.000'})
worksheet.set_column('C:C', None, excel_format)  # Adds formatting to column C
excel_writer.save()

Также посмотрите здесь, в документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...