Hoe maak je panda's read_excel () gebruiken voor het excel bestand met meerdere platen?

stemmen
0

Ik heb een Excel-bestand met veel bladen. Er is slechts één kolom in elk blad, welke kolom A I plan om het Excel met lezen read_excel()methode. Hier is de code:

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

Het probleem is, het for looploopt slechts een keer. Door het uitvoeren van het tweede punt in de for looptoont me de volgende fout tekst:

  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

Als een beginner Ik heb geen idee over deze fout. Kan iemand mij helpen om de codes te corrigeren? Bedankt.

UPDATE Vraag:

Als het is omdat dat het Excel-bestand bevat veel formulars en externe links, waarom het for loopnog steeds zijn eerste punt uit te voeren? Verward.

De vraag is gesteld op 05/08/2016 om 02:10
user
In andere talen...                            


3 antwoorden

stemmen
0

Onder verwijzing naar het antwoord hier: Met behulp van Panda's te pd.read_excel () voor meerdere werkbladen van dezelfde werkmap

Misschien kunt u dit proberen:

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

Of dit als een dict in plaats van de lijst, zodat u gemakkelijk een bepaalde plaat uit te werken met

import pandas as pd
xls = pd.ExcelFile("C:\\AAA.xlsx")
dfs = {}
for x in ['0', '1', 'S', 'B', 'U'] :
    dfs[x] = xls.parse(x)
antwoordde op 05/08/2016 om 02:14
bron van user

stemmen
1

Waarom gebruikt u sheetname=str(SheetNames[Page])?

Als ik het goed begrijp uw vraag Ik denk dat wat je wilt is:

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 
antwoordde op 05/08/2016 om 03:14
bron van user

stemmen
0

U kunt gewoon gebruik maken van:

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

Wanneer u SHEET_NAME = Geen 'instelt, zal panda's automatisch gelezen alle excelbladen van uw werkmap. En voor de iteratie dan lakens en het is inhoud die u kunt itereren over 'df.items ()' en doen wat manipulatie je moet doen. In het bovenstaande code 'sleutel' is de naam vellen en 'waarde' van de inhoud binnenste laag. Er is geen noodzaak om extra lijst object te maken, in uw geval 'sheet_names'. Hoop dat het zal uw probleem op te lossen.

antwoordde op 20/08/2019 om 16:50
bron van user

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