Создайте новый столбец данных, применив формулу Excel с помощью Python

У меня есть электронная таблица excel, которую я читаю в кадре данных с помощью pandas. У меня есть второй файл excel, который содержит некоторые формулы, которые необходимо применить к первому excel, чтобы создать новый столбец. Мой кадр данных первого excel выглядит примерно так:

RPA Rej    RPA Acc
  1          0
  5          3
  0          0

Что касается второго excel, я хочу вычесть значения RPA Rej и RPA Acc и создать новый столбец Total с их результатом и записать весь фрейм данных в файл excel, чего я очень добился этим:

df['Total'] = df['RPA Rej'] - df['RPA Acc']

и это:

df.to_excel('data.xlsx', index = False)

но я хочу видеть формулу excel, когда я нажимаю значения в столбце Total, что-то вроде этого:

введите здесь описание изображения

Я не знаю, как выполнять арифметические операции на питоне, используя формулы Excel. Если бы вы, ребята, могли помочь мне достичь этого, я был бы очень признателен, что


person vesuvius    schedule 23.01.2020    source источник
comment
Вы говорите, что хотите записать формулы Excel в столбцы, а затем экспортировать их? - если да, то почему бы просто не сделать это в excel?   -  person Umar.H    schedule 23.01.2020
comment
На самом деле, это делалось только в Excel, но я создаю своего рода инструмент автоматизации, который одним нажатием кнопки создаст новый Excel, применяя формулы предыдущего Excel, следовательно, уменьшая хлопоты, связанные с выполнением этого вручную.   -  person vesuvius    schedule 23.01.2020


Ответы (1)


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

import pandas as pd
import numpy as np

# Create a test dataframe
df = pd.DataFrame({'RPA Rej': [1,5,0],
                    'RPA Acc': [0,3,0]})

# Insert an empty column to write the formulas
df.insert(2, 'TOTAL', np.nan)

# Start the xlsxwriter
writer = pd.ExcelWriter('Test Formulas.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

# Create a for loop to start writing the formulas to each row
for row in range(2,df.shape[0]+2):
    formula = f'=A{row}-B{row}'
    worksheet.write_formula(f"C{row}", formula)

writer.save()

Вывод: Вывод

person Dimitris Thomas    schedule 25.01.2020