Cum să utilizați read_excel panda () pentru fișier Excel cu foi multiple?

voturi
0

Am un fișier Excel cu multe foi. Există doar o singură coloană în fiecare foaie, care este coloana A. Am de gând să citesc fișierul Excel cu read_excel()metoda. Hier este codul:

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

Problema este, se for loopexecută o singură dată. Prin rularea de- al doilea element din for loopmi - arată următorul text de eroare:

  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

Ca un începător am nici o idee despre această eroare. Ar putea cineva te rog ajută-mă să corecteze codurile? Mulțumiri.

UPDATE Întrebare:

În cazul în care aceasta se datorează faptului că fișierul Excel conține multe formulars și link - uri externe, de ce for loopar putea rula în continuare primul său articol? Confuz.

Întrebat 05/08/2016 la 02:10
de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Referindu -se la răspunsul aici: Utilizarea Pandas la pd.read_excel () pentru mai multe foi de lucru ale aceluiași registru de lucru

Poate că puteți încerca acest lucru:

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

Sau acest lucru ca un dict în loc de listă, astfel încât să puteți obține cu ușurință o anumită foaie de ieșire pentru a lucra cu

import pandas as pd
xls = pd.ExcelFile("C:\\AAA.xlsx")
dfs = {}
for x in ['0', '1', 'S', 'B', 'U'] :
    dfs[x] = xls.parse(x)
Publicat 05/08/2016 la 02:14
sursa de către utilizator

voturi
1

De ce sunt utilizați sheetname=str(SheetNames[Page])?

Dacă am înțeles întrebarea dumneavoastră corect cred că ceea ce vrei este:

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 
Publicat 05/08/2016 la 03:14
sursa de către utilizator

voturi
0

Puteți folosi pur și simplu:

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

Când setați „SHEET_NAME = Nici unul“, ursi panda va citi automat toate foile Excel din registrul de lucru. Iar pentru iterarea peste foi și este conținutul pe care îl puteți itera peste „df.items ()“ și de a face orice manipulare va trebui să faci. În această „cheie“ codul de mai sus este numele foi și „valoarea“ este conținutul în interiorul foaie. Nu este nevoie de a crea obiect liste suplimentare, în cazul dumneavoastră „sheet_names“. Sper că va rezolva problema.

Publicat 20/08/2019 la 16:50
sursa de către utilizator

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