получите содержимое листа Excel в фрейме данных pandas, но с формулами, а не значениями

#python #excel #pandas #openpyxl

#питон #превосходить #панды #openpyxl

Вопрос:

Я хотел бы иметь фрейм данных pandas с содержимым файла excel с формулами, если таковые имеются.

Итак, из этого test.xlsx файла:

 gt;gt;gt; from openpyxl import load_workbook gt;gt;gt; sheet = load_workbook('test.xlsx', data_only=False).active gt;gt;gt; for i in range(1, 4, 1): gt;gt;gt; for j in range(1, 3, 1): gt;gt;gt; print(sheet.cell(i, j).value) gt;gt;gt;  4 a 3 b =A1 A2 =B1amp;"_"amp;B2 gt;gt;gt;  

Как я могу получить такой фрейм данных панд ?:

 In [8]: df Out[8]:  4 a 0 3 b 1 '=A1 A2' '=B1amp;"_"amp;B2'  

На данный момент я получаю только ценности::

 In [6]: import pandas as pd In [7]: df = pd.read_excel('test.xlsx') In [8]: df  Out[8]:  4 a 0 3 b 1 7 a_b  

Примечание: Я на Linux, поэтому не могу использовать xlwings

Ответ №1:

openpyxl делает это по умолчанию и sheet.values может использоваться для создания фрейма данных pandas:

 gt;gt;gt; from openpyxl import load_workbook gt;gt;gt; sheet = load_workbook('test.xlsx', data_only=False).active gt;gt;gt; df = pd.DataFrame(sheet.values) gt;gt;gt; gt;gt;gt; df 0 4 a 1 3 b 2 =A2 A3 =B2amp;"_"amp;B3 gt;gt;gt;