【问题标题】:Pandas read_excel - returning nan for cells having formulaPandas read_excel - 为具有公式的单元格返回 nan
【发布时间】:2020-05-07 07:15:55
【问题描述】:

我有一个 excel 文件,其中包含会计数据以及某些单元格的文件使用公式。当我使用 pandas read_excel 读取文件中的值时,它会为具有公式的单元格返回 nan 值。我也用过openpyxl,但还是有同样的问题。

对于具有公式的单元格,是否有任何方法可以读取值而不是公式。

我还附上了使用的 xlsx 文件。

https://drive.google.com/file/d/1aOTYwtKTrqyjF16vDizzzvMkUsvdgRe1/view?usp=sharing

谢谢...

【问题讨论】:

标签: python pandas


【解决方案1】:

在使用您的excelsheet之前,请确保您已将excel文件的权限设置为读写,如果是只读文件,则更改为读写。

import pandas as pd
your_data = pd.read_excel('yourfile.xlsx',sheet_name='your_sheet_name')
print(your_data) #checking
your_data.dropna(inplace=True)
your_data.rename(columns = {'Unnamed: 1':'Total'},inplace =True) 
print(your_data['Total'].tolist()) #The column name where your formula is being calculated.

【讨论】:

  • 还是同样的问题。请检查上面的示例文件
  • 总计栏好像是空的??
  • 下载文件并在任何excel查看器中打开你可以看到值(它隐藏在谷歌表格预览中)
  • @MuthuKumar 你必须在excel中选择B列,右键单击并格式化单元格。在数字部分 - 默认情况下它必须是“常规”,将其更改为“12345.76”类型的数字。并保存您的 Excel 工作表。上面的代码运行良好。
  • 是的,这行得通,但我不应该这样做
【解决方案2】:

我没有足够的声望点来发表评论,所以我必须将其作为答案,但事实并非如此。

对于您的示例文件,我没有任何问题。我正在使用 python 3.8 和 Pandas 0.25.3。熊猫读得很好,并且数字可用。也就是说,我阅读由公式计算的值的经验是,它取决于公式的复杂性。像 Index、Match 这样的可变函数将被读取为 nan,但更简单的函数可以读取为数字。

这只是一种解决方法,而不是真正的解决方案,但如果您可以使用仅引用具有复杂公式的列的公式创建一个新列,则可以读取该列的数据。

【讨论】:

    【解决方案3】:

    在读取已附加到使用 excel writer 的 excel 文件时,我遇到了与您完全相同的问题。发生这种情况是因为 excel 文件上的链接没有更新,因此公式不计算值。

    2 个对我有用的解决方案:

    1. 出现提示时打开文件并更新链接或
    2. 根据此处发布的解决方案,在读取文件之前添加代码以刷新文件。 Refresh Excel External Data with Python

    希望这会有所帮助。

    编辑:这里的新用户,不知道拒绝/批准是如何工作的,任何建设性的反馈将不胜感激。

    【讨论】:

    • 刷新 excel 有帮助!
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 2017-06-10
    相关资源
    最近更新 更多