如何使用 Pandas 将 xlsx 文件作为数据框读取,并将公式保留为字符串?

4

我有一个包含计算列的Excel文件。

例如,我的一些数据在列'a'中,而列'b'是使用列'a'中的值进行计算的。

我需要将新数据添加到列'a'中,并计算列'b',然后保存文件。

import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':["=a2","=a3","=a4"]})
df.to_excel('test.xlsx',index=False)

当我试图使用 Pandas 的 read_excel 函数读取文件时,它会将列 'b' 读取为 NaN。

df = pd.read_excel(r'test.xlsx')

我该如何实现这个目标呢?也许如果我将文件读取为字符串并将公式作为字符串附加,当我在Excel中打开文件时,Excel会进行计算吗?

2个回答

4
使用OpenPyXL加载Excel工作表,而不是直接使用pandas。
from openpyxl import load_workbook
import pandas as pd
wb = load_workbook(filename = 'test.xlsx')
sheet_name = wb.get_sheet_names()[0]
ws = wb[sheet_name]
df = pd.DataFrame(ws.values)

read_excel 方法的一个不同之处似乎是该方法不会自动使用第一行作为列名。如果您需要这样做,请参见此答案:https://dev59.com/pLXna4cB1Zd3GeqPDwaC#56981317 - craq

0
import pandas as pd
import xlsxwriter

name = '123.xlsx'
writer = pd.ExcelWriter(name,engine='xlsxwriter')
pd.DataFrame({}).to_excel(writer,sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
worksheet.write('A1',1)
worksheet.write('A2','=A1')
writer.save()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接