2013-07-31 13 views
45

Nowa wersja Pandy wykorzystuje the following interface załadować pliki programu Excel:Pandy: Patrząc na listę arkuszy w pliku Excel

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

ale co, jeśli nie wiem, arkusze, które są dostępne?

Na przykład pracuję z plików Excel następujące arkusze

danych 1, 2 ... danych, dane N, foo, bar

ale nie wiem N a priori.

Czy istnieje sposób na uzyskanie listy arkuszy z dokumentu programu Excel w Pandach?

Odpowiedz

84

Można nadal używać klasy ExcelFile (i atrybut sheet_names):

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

xl.sheet_names # see all sheet names 

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

widzieć docs for parse więcej opcji ...

+1

Dzięki @Andy. Czy mogę zapytać, czy Panda ładuje arkusz Excela w "ExcelFile"? Ponadto, powiedz, że sprawdzam listę arkuszy i decyduję się załadować N ich, czy powinienem w tym momencie wywołać 'read_excel' (nowy interfejs) dla każdego arkusza, czy trzymać się' x1.parse'? –

+2

I * think * ExcelFile utrzymuje plik otwarty (i nie czyta go wszystkie), myślę, że przy użyciu parse (i otwarcie pliku tylko raz) ma sens tutaj. tbh Brakowało mi przyjazdu read_excel! –

+4

Wspomniany wcześniej [tutaj] (http://stackoverflow.com/a/16896091/1240268), ale lubię przechowywać słownik DataFrames za pomocą '{nazwa_paragrafu: xl.parse (nazwa_pola) dla nazwa_fabrykatu w xl.sheet_names} –

8

Należy wyraźnie określić drugi parametr (nazwa arkusza), jak Żaden. tak:

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

"df" są wszystkie arkusze jako słownika DataFrames można zweryfikować przez metę to:

df.keys() 

wynik jak ten:

[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'] 

Proszę odnieść pandy po więcej szczegółów: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

+0

Powoduje niepotrzebne przetwarzanie każdego arkusza jako elementu DataFrame, który nie jest wymagany. "Jak czytać plik xls/xlsx" to [inne pytanie] (https://stackoverflow.com/q/16888888/1240268). –

+1

@AndyHayden może nie być skuteczny, ale może być najlepszy, jeśli dbasz o wszystkie arkusze, lub nie dbasz o dodatkowe obciążenie. – CodeMonkey

Powiązane problemy