Hogyan kell használni a pandák read_excel () Excel fájl több lap?

szavazat
0

Van egy excel fájl sok lapot. Csak egy oszlop minden lapot, amely az A. oszlop azt tervezem, hogy olvassa el az Excel fájlt read_excel()módszerrel. Hier a kód:

import pandas as PD

ExcelFile  = C:\\AAA.xlsx
SheetNames = ['0', '1', 'S', 'B', 'U'] 
# There are five sheets in this excel file. Those are the sheet names.

PageTotal  = len(SheetNames)

for Page in range(PageTotal):
    df = PD.read_excel(ExcelFile, header=None, squeeze = True, parse_cols = A ,sheetname=str(SheetNames[Page]))
    print df
    #do something with df

A probléma az, hogy for loopcsak egyszer fut. A futás a második elem a for loopazt mutatja nekem, a következő hibaüzenet szövege:

  File C:\Python27\lib\site-packages\pandas\io\excel.py, line 170, in read_excel
    io = ExcelFile(io, engine=engine)
  File C:\Python27\lib\site-packages\pandas\io\excel.py, line 227, in __init__
    self.book = xlrd.open_workbook(io)
  File C:\Python27\lib\site-packages\xlrd\__init__.py, line 422, in open_workbook
    ragged_rows=ragged_rows,
  File C:\Python27\lib\site-packages\xlrd\xlsx.py, line 824, in open_workbook_2007_xml
    x12sst.process_stream(zflo, 'SST')
  File C:\Python27\lib\site-packages\xlrd\xlsx.py, line 432, in process_stream_iterparse
    for event, elem in ET.iterparse(stream):
  File <string>, line 103, in next
IndexError: pop from empty stack

Mint kezdő fogalmam sincs erről a hibáról. Lehet bárki kérem, segítsen nekem, hogy korrigálja a kódokat? Kösz.

UPDATE kérdés:

Ha ez azért van, mert, hogy az Excel fájl tartalmaz sok formulars és külső linkeket, hogy miért for loopmég mindig fut az első tételt? Zavaros.

A kérdést 05/08/2016 02:10
felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

Utalva a válasz itt van: A panda pd.read_excel () több munkalapot ugyanazon munkafüzet

Talán akkor próbáld ki ezt:

import pandas as pd
xls = pd.ExcelFile("C:\\AAA.xlsx")
dfs = []
for x in ['0', '1', 'S', 'B', 'U'] :
    dfs.append(xls.parse(x))

Vagy ezt a dict helyett listát, így könnyen kap egy adott lapot ki dolgozni

import pandas as pd
xls = pd.ExcelFile("C:\\AAA.xlsx")
dfs = {}
for x in ['0', '1', 'S', 'B', 'U'] :
    dfs[x] = xls.parse(x)
Válaszolt 05/08/2016 02:14
a forrás felhasználó

szavazat
1

Miért használ sheetname=str(SheetNames[Page])?

Ha jól értem a kérdést helyesen azt hiszem, amit akarsz:

import pandas as PD

excel_file  = r"C:\\AAA.xlsx"
sheet_names = ['0', '1', 'S', 'B', 'U'] 

for sheet_name in sheet_names:
    df = pd.read_excel(excel_file, header=None, squeeze=True, parse_cols="A", sheetname=sheet_name)
    print(df)
    #do something with df 
Válaszolt 05/08/2016 03:14
a forrás felhasználó

szavazat
0

Egyszerűen használható:

df = pd.read_excel("C:\\AAA.xlsx", sheet_name=None)  
for key, value in df.items(): 
    ................

Amikor elindult „SHEET_NAME = nincs” panda automatikusan beolvassa az Excel lapokat a munkafüzetben. És az iterációt lapok és ez a tartalma, akkor végighaladni „df.items ()” és tegyenek meg mindent a manipuláció, akkor meg kell tennie. Ebben a fenti kód „kulcs” a lap nevét és az „érték” a tartalom benne lemez. Nincs szükség, hogy hozzon létre külön lista tárgy, az Ön esetében „sheet_names”. Remélem ez megoldja a problémát.

Válaszolt 20/08/2019 16:50
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more