Сохраните формулу Excel в DataFrame, а затем запишите ее в Excel - PullRequest
0 голосов
/ 17 марта 2020

Есть небольшой фрейм данных df. Я хочу записать его в Excel, чтобы столбец B содержал формулу: B = A + C

df = pd.DataFrame(np.random.randint(0,1000,size=(3,3)), columns=list('ABC'))
df['B']='=RC[-1]+RC[1]'
with pd.ExcelWriter(r'C:\Users\belose\Downloads\output.xlsx', engine='openpyxl', mode='w')as writer:
    df.to_excel(writer, sheet_name='Sheet1',  index=False)

Затем Excel вообще не распознает содержимое столбца B и отправляет сообщение об ошибке. enter image description here

Что я делаю не так?

1 Ответ

1 голос
/ 17 марта 2020

Попробуйте это по формуле:

df = pd.DataFrame(np.random.randint(0,1000,size=(3,3)), columns=list('ABC'))
df['B'] = '=INDIRECT("R[0]C[-1]", 0)+INDIRECT("R[0]C[1]", 0)'

with pd.ExcelWriter(r'output.xlsx', engine='openpyxl', mode='w')as writer:
    df.to_excel(writer, sheet_name='Sheet1',  index=False)

Вывод:

enter image description here

Вы также можете импровизировать, указав позицию столбцов «A» и «C» относительно «B» вместо -1 и 1.

df['B'] = '=INDIRECT("R[0]C[%s]", 0)+INDIRECT("R[0]C[%s]", 0)'%\
          (df.columns.get_loc('A') - df.columns.get_loc('B'),
           df.columns.get_loc('C') - df.columns.get_loc('B'))
...