2017-01-18 82 views
3

有沒有辦法讓熊貓只讀取excel中的值而不是公式?它以NaN的形式讀取公式,除非我進入並在運行代碼之前手動保存excel文件。我只是有基本的讀取工作出色大熊貓的功能,熊貓閱讀excel值不是公式

import pandas as pd 

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

這會讀如果我去了,文件運行代碼之前保存的值。但是,在運行代碼更新新工作表之後,如果我在此之後不進入並保存文件並嘗試再次運行該文件,它將以NaN形式讀取公式,而不是僅讀取這些值。是否有任何人都知道,只讀取來自大熊貓的價值觀?

+0

您的Excel電子表格是否爲自動計算模式? – Boud

+0

是的公式被設置爲自動計算。 –

+0

怪異的,是你的原始文件保存的人類或來自程序之前,你轉售它? – Boud

回答

1

這很奇怪。熊貓的正常行爲是讀取值,而不是公式。可能,問題出在你的excel文件中。也許你的公式指向其他文件,或者他們返回一個pandas認爲是nan的值。

在第一種情況下,工作表需要更新,大熊貓可以做些什麼(但請繼續閱讀)。

在第二種情況下,你可以通過在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(不同地點))。然後你可以用shutil去除臨時文件。

+0

是的,我知道我可以自動化儲蓄,我只是想弄明白是否有辦法。公式不會指向其他文件,它們只是從一列中取值並減去其他列的值的總和,所以它們只是返回數字。 –