熊猫读取 excel 值而不是公式

新手上路,请多包涵

有没有办法让 pandas 只读入 excel 的值而不读入公式?除非我在运行代码之前进入并手动保存 excel 文件,否则它将以 NaN 形式读取公式。我只是在使用 pandas 的基本读取 excel 功能,

 import pandas as pd

df = pd.read_excel(filename, sheetname="Sheet1")

如果我在运行代码之前进入并保存了文件,这将读取值。但是在运行更新新工作表的代码后,如果我在执行此操作后不进入并保存文件并尝试再次运行它,它会将公式读取为 NaN 而不仅仅是值。是否有任何人都知道的解决方法可以使用 pandas 从 excel 中读取值?

原文由 Colton T 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 962
1 个回答

这很奇怪。 pandas 的正常行为是读取值,而不是公式。问题可能出在您的 excel 文件中。可能您的公式指向其他文件,或者它们返回一个 pandas 视为 nan 的值。

在第一种情况下,工作表需要更新,pandas 对此无能为力(但请继续阅读)。

在第二种情况下,您可以通过在 read_excel 中设置明确的 nan 值来解决:

 pd.read_excel(path, sheetname="Sheet1", na_values = [your na identifiers])

对于第一种情况,作为使您的工作更轻松的变通解决方案,您可以使用 xlwings 自动执行您正在做的事情:

 import pandas as pd
import xlwings as xl

def df_from_excel(path):
    app = xl.App(visible=False)
    book = app.books.open(path)
    book.save()
    app.kill()
    return pd.read_excel(path)

df = df_from_excel(path to your file)

如果您想将这些公式保留在 excel 文件中,只需将文件保存在不同的位置 (book.save(different location))。然后你可以用 shutil 删除临时文件。

原文由 RobatStats 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题