将Excel公式保存到DataFrame中,然后将其写入Excel

时间:2020-03-17 10:51:41

标签: python pandas openpyxl

有一个小的数据帧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 个答案:

答案 0 :(得分:1)

尝试以下公式:

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

您也可以通过给出相对于“ B”的“ A”和“ C”列相对于-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'))