python: xlsxwriter добавляет фрейм данных + формулу в файл Excel - PullRequest
1 голос
/ 03 августа 2020

Я нашел разные методы записи фреймов данных и формул в файл Excel.

import pandas as pd
import numpy as np
import xlsxwriter

# Method 1
writer = pd.ExcelWriter('example.xlsx', engine='xlsxwriter')
A = pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]))
A.to_excel(writer , sheet_name='Sheet1')
writer.save()

# Method 2
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write_formula('B5' , '=_xlfn.STDEV.S(B3:B5)')
workbook.close()

Один работает для добавления фрейма данных, другой - для формулы. Проблема: Метод 2 удаляет то, что было записано в файл с помощью метода 1. Как их объединить?

1 Ответ

0 голосов
/ 03 августа 2020

Вот один из способов сделать это, если вы хотите объединить два действия в одно:

import pandas as pd
import numpy as np
import xlsxwriter

# Method 1
writer = pd.ExcelWriter('example.xlsx', engine='xlsxwriter')
A = pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]))
A.to_excel(writer , sheet_name='Sheet1')

# Get the xlsxwriter objects from the dataframe writer object.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

# Write the formula.
worksheet.write_formula('B5' , '=_xlfn.STDEV.S(B2:B4)')

# Or Create a new worksheet and add the formula there.
worksheet = workbook.add_worksheet()
worksheet.write_formula('B5' , '=_xlfn.STDEV.S(Sheet1!B2:B4)')

writer.save()

Вывод :

enter image description here

See the Работа с разделом Python Pandas и XlsxWriter документации XlsxWriter.

Обратите внимание: я исправил диапазон формулы, чтобы избежать циклической ссылки.

...