Πώς να χρησιμοποιήσετε το read_excel pandas () για το αρχείο excel με πολλαπλά φύλλα;

ψήφοι
0

Έχω ένα αρχείο excel με πολλά φύλλα. Υπάρχει μόνο μία στήλη σε κάθε φύλλο, το οποίο είναι στήλη Α σκοπεύω να διαβάσει το αρχείο excel με read_excel()τη μέθοδο. Hier είναι ο κώδικας:

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

Το πρόβλημα είναι, οι for loopτρέχει μόνο μία φορά. Εκτελώντας το δεύτερο στοιχείο στο for loopνα μου δείχνει το ακόλουθο κείμενο σφάλματος:

  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

Ως αρχάριος δεν έχω ιδέα για αυτό το σφάλμα. Θα μπορούσε κάποιος παρακαλώ να με βοηθήσει να διορθώσει τους κωδικούς; Ευχαριστώ.

ΕΝΗΜΕΡΩΣΗ Ερώτηση:

Εάν αυτό συμβαίνει επειδή το αρχείο excel περιέχει πολλά formulars και εξωτερικές συνδέσεις, γιατί το for loopμπορεί να συνεχίσει να λειτουργεί το πρώτο στοιχείο της; Ταραγμένος.

Δημοσιεύθηκε 05/08/2016 στις 02:10
χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
0

Αναφερόμενος στην απάντηση εδώ: Χρησιμοποιώντας Πάντα να pd.read_excel () για πολλαπλά φύλλα εργασίας του ίδιου βιβλίου εργασίας

Ίσως μπορείτε να δοκιμάσετε αυτό:

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

Ή αυτό ως dict αντί της λίστας, ώστε να μπορείτε εύκολα να πάρετε ένα συγκεκριμένο φύλλο έξω να συνεργαστεί με

import pandas as pd
xls = pd.ExcelFile("C:\\AAA.xlsx")
dfs = {}
for x in ['0', '1', 'S', 'B', 'U'] :
    dfs[x] = xls.parse(x)
Απαντήθηκε 05/08/2016 στις 02:14
πηγή χρήστη

ψήφοι
1

Γιατί χρησιμοποιείτε sheetname=str(SheetNames[Page]);

Αν κατάλαβα την ερώτησή σας σωστά Νομίζω ότι αυτό που θέλετε είναι:

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 
Απαντήθηκε 05/08/2016 στις 03:14
πηγή χρήστη

ψήφοι
0

Μπορείτε απλά να χρησιμοποιήσετε:

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

Όταν ορίζετε «SHEET_NAME = Κανένας», pandas θα διαβάσει αυτόματα όλες υπερέχουν τα φύλλα από το βιβλίο εργασίας σας. Και για επανάληψη πάνω από τα φύλλα και είναι το περιεχόμενο μπορείτε να μετακινηθείτε πάνω »df.items () και κάνει ό, τι χειραγώγησης θα πρέπει να κάνετε. Σε αυτό το παραπάνω κώδικα «κλειδί» είναι το όνομα φύλλα και «αξία» είναι το περιεχόμενο μέσα στο φύλλο. Δεν υπάρχει καμία ανάγκη να δημιουργηθούν επιπλέον αντικείμενο λίστα, σε περίπτωση που σας sheet_names ». Ελπίζω ότι θα λύσει το πρόβλημά σας.

Απαντήθηκε 20/08/2019 στις 16:50
πηγή χρήστη

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