首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas读取excel值而不是公式

pandas读取excel值而不是公式
EN

Stack Overflow用户
提问于 2017-01-18 22:46:05
回答 3查看 17.9K关注 0票数 15

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

代码语言:javascript
复制
import pandas as pd

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

如果我在运行代码之前已经进入并保存了文件,这将读取这些值。但是在运行代码来更新新工作表之后,如果我没有在更新后保存文件并尝试再次运行,它会将公式读取为NaN,而不仅仅是值。有没有任何人都知道的工作,可以从excel中读取熊猫的值?

EN

回答 3

Stack Overflow用户

发布于 2017-01-19 06:18:02

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

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

在第二种情况下,您可以通过在read_excel中设置显式的NaN值来解决:

代码语言:javascript
复制
pd.read_excel(path, sheetname="Sheet1", na_values = [your na identifiers])

至于第一种情况,作为一种使您的工作更容易的变通解决方案,您可以使用xlwing手动自动化正在执行的操作:

代码语言:javascript
复制
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(不同位置))。然后你就可以用shutil去掉临时文件了。

票数 11
EN

Stack Overflow用户

发布于 2019-05-08 22:59:52

我遇到了这个问题,我通过在我正在阅读的第一行下面移动一个图表来解决它。看起来图形的位置可能会导致问题。

票数 0
EN

Stack Overflow用户

发布于 2021-01-29 20:58:40

您可以使用xlrd来读取值。首先,你应该刷新你的excel表格,你也可以用python自动更新值。您可以使用下面的函数file = myxl.xls

代码语言:javascript
复制
import xlrd
import win32com.client
import os

def refresh_file(file):
    xlapp = win32com.client.DispatchEx("Excel.Application")
    path = os.path.abspath(file)
    wb =  xlapp.Wordbooks.Open(path)
    wb.RefreshAll()
    xlapp.CalculateUntilAsyncqueriesDone()
    wb.save()
    xlapp.Quit()

文件刷新后,您可以开始读取内容。

代码语言:javascript
复制
workbook = xlrd.open_workbook(file)
worksheet = workbook.sheet_by_index(0)
for rowid in range(worksheet.nrows):
    row = worksheet.row(rowid)
    for colid, cell in enumerate(row):
        print(cell.value)

您可以按您需要的方式遍历数据。并在读取数据时设置条件。更大的灵活性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41722374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档