2013-07-31 18 views
45

La nuova versione di Panda usa the following interface per caricare i file di Excel:Pandas: Guardando l'elenco dei fogli in un file Excel

read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA']) 

ma cosa succede se non so i fogli che sono disponibili?

Per esempio, sto lavorando con i file excel che le seguenti schede

Data 1, Data 2 ..., dati N, foo, bar

ma non so N a priori.

Esiste un modo per ottenere l'elenco dei fogli da un documento Excel in Pandas?

risposta

84

È comunque possibile utilizzare la classe ExcelFile (e l'attributo sheet_names):

xl = pd.ExcelFile('foo.xls') 

xl.sheet_names # see all sheet names 

xl.parse(sheet_name) # read a specific sheet to DataFrame 

vedere docs for parse per ulteriori opzioni ...

+1

Grazie @Andy. Posso chiederlo, Pandas carica il foglio Excel in 'ExcelFile'? Inoltre, dite che cerco l'elenco dei fogli e decido di caricarne N, dovrei a quel punto chiamare 'read_excel' (la nuova interfaccia) per ogni foglio, o attaccare a' x1.parse'? –

+2

I * think * ExcelFile mantiene il file aperto (e non lo legge tutto), penso che l'uso di parse (e l'apertura del file solo una volta) abbia più senso qui. tbh ho perso l'arrivo di read_excel! –

+4

Menzionato prima di [here] (http://stackoverflow.com/a/16896091/1240268), ma mi piace mantenere un dizionario di DataFrames usando '{sheet_name: xl.parse (sheet_name) per sheet_name in xl.sheet_names}' –

8

Si dovrebbe specificare in modo esplicito il secondo parametro (nomefoglio) come Nessuna. in questo modo:

df = pandas.read_excel("/yourPath/FileName.xlsx", None); 

"df" sono tutti i fogli come un dizionario di DataFrames, è possibile verificare che per eseguire questo:

df.keys() 

risultato come questo:

[u'201610', u'201601', u'201701', u'201702', u'201703', u'201704', u'201705', u'201706', u'201612', u'fund', u'201603', u'201602', u'201605', u'201607', u'201606', u'201608', u'201512', u'201611', u'201604'] 

prega di fare riferimento panda doc per maggiori dettagli: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

+0

Analizza inutilmente ogni foglio come un DataFrame, che non è necessario. "Come leggere un file xls/xlsx" è una [domanda diversa] (https://stackoverflow.com/q/16888888/1240268). –

+1

@AndyHayden potrebbe non essere efficiente, ma potrebbe essere il migliore se ti interessano tutti i fogli, o non ti interessa il sovraccarico aggiuntivo. – CodeMonkey

Problemi correlati