如何在 pandas/python 中查看 excel 电子表格的公式?
Posted
技术标签:
【中文标题】如何在 pandas/python 中查看 excel 电子表格的公式?【英文标题】:How can I see the formulas of an excel spreadsheet in pandas / python? 【发布时间】:2017-06-25 10:54:05 【问题描述】:我想在 Excel 电子表格中读取 python/pandas,但使用公式而不是单元格结果。
例如,如果单元格 A1 是 25,而单元格 B1 是 =A1,我希望我的数据框显示:
25 =A1
现在显示:
25 25
我该怎么做?
【问题讨论】:
我很确定pandas
中没有内置的方法可以做到这一点。
@juanpa.arrivillaga 同意了,尽管收到确认总是很高兴。希望有一个包或可以允许它的东西。
【参考方案1】:
OpenPyXL
提供这种开箱即用的容量。请参阅 here 和 here。一个例子:
from openpyxl import load_workbook
import pandas as pd
wb = load_workbook(filename = 'empty_book.xlsx')
sheet_names = wb.get_sheet_names()
name = sheet_names[0]
sheet_ranges = wb[name]
df = pd.DataFrame(sheet_ranges.values)
【讨论】:
我在实施时遇到问题:***.com/questions/42397769/… 看起来有人在我之前做到了。另外,您应该接受这篇文章作为答案。 只是在等待验证。我现在有。谢谢! 嗨 @AlekseyBilogur 知道我们如何在 CSV 中进行操作吗? 嗨@AlekseyBilogur 我确实试了一下,虽然这种方法会读取公式,但它似乎正在删除值本身?我阅读并刚刚将 excel 写入新文件,它保留了公式、格式和所有内容,但截断了其中的所有值。【参考方案2】:是的,这是可能的。我最近发现了一个以非常复杂的方式解决此问题的软件包。它被称为便携式电子表格(可通过pip install portable-spreadsheet
获得)。它基本上封装了xlsxwriter
。这是一个简单的例子:
import portable_spreadsheet as ps
sheet = ps.Spreadsheet.create_new_sheet(5, 5)
# Set values
sheet.iloc[0, 0] = 25 # Set A1
sheet.iloc[1, 0] = sheet.iloc[0, 0] # reference to A1
# Export to Excel
sheet.to_excel('output/sample.xlsx')
它的工作方式与 Pandas Dataframe 类似。
【讨论】:
【参考方案3】:使用xlwings 和pandas 模块可以选择一种方法。 xlwings 提供了一种通过 python 脚本自动化 excel 的方法。
创建一个“sample.xlsx”文件并在范围(“A1”)中添加随机公式。
以下是从给定文件中读取值和公式的示例代码:
import pandas as pd
import xlwings as xw
wbk = xw.Book('sample.xlsx')
ws = wbk.sheets[0]
print(ws.cells(1,1).value)
print(ws.cells(1,1).formula)
同样的事情也适用于范围。您可以将range.value
分配到数据框中,反之亦然。
如果你想从大范围内获取公式,你也可以得到它,但它会返回元组。
希望这在某种程度上有所帮助。
【讨论】:
以上是关于如何在 pandas/python 中查看 excel 电子表格的公式?的主要内容,如果未能解决你的问题,请参考以下文章
pandas,python - 如何在时间序列中选择特定时间
Pandas Python DataFrame格式转换[重复]
AFNetworking EXC_BAD_ACCESS (code=2, address=0x0) in downloadTask