2013-07-31 73 views
45

Phiên bản mới của gấu trúc sử dụng the following interface để tải file Excel:Pandas: Nhìn lên danh sách các sheet trong một file excel

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

nhưng những gì nếu tôi không biết các tấm mà có sẵn?

Ví dụ, tôi đang làm việc với các file excel rằng tờ sau

dữ liệu 1, dữ liệu 2 ..., dữ liệu N, foo, thanh

nhưng tôi không biết N một ưu tiên.

Có cách nào để lấy danh sách trang tính từ tài liệu excel trong Pandas không?

Trả lời

84

Bạn vẫn có thể sử dụng lớp ExcelFile (và sheet_names thuộc tính):

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

xl.sheet_names # see all sheet names 

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

thấy docs for parse cho các tùy chọn thêm ...

+1

Cảm ơn @Andy. Tôi có thể hỏi, không Pandas tải bảng excel trong 'ExcelFile'? Ngoài ra, nói rằng tôi nhìn lên danh sách các tờ và quyết định tải N của họ, nên tôi tại điểm đó gọi 'read_excel' (giao diện mới) cho mỗi tờ, hoặc dính vào' x1.parse'? –

+2

Tôi nghĩ * ExcelFile giữ cho tệp mở (và không đọc tất cả), tôi nghĩ việc sử dụng phân tích cú pháp (và mở tệp chỉ một lần) có ý nghĩa nhất ở đây. tbh Tôi đã bỏ lỡ sự xuất hiện của read_excel! –

+4

Được đề cập trước đây [ở đây] (http://stackoverflow.com/a/16896091/1240268), nhưng tôi muốn giữ một từ điển của DataFrames bằng cách sử dụng '{sheet_name: xl.parse (sheet_name) cho sheet_name trong xl.sheet_names}' –

8

Bạn nên xác định một cách rõ ràng tham số thứ hai (tên này) như Không ai. như thế này:

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

"df" là tất cả các tờ như một cuốn từ điển của DataFrames, bạn có thể xác minh nó bằng cách chạy này:

df.keys() 

kết quả như thế này:

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

vui lòng tham khảo pandas doc để biết thêm chi tiết: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

+0

Việc phân tích cú pháp này không cần thiết mỗi trang tính như một DataFrame, không bắt buộc. "Cách đọc tệp xls/xlsx" là [câu hỏi khác] (https://stackoverflow.com/q/16888888/1240268). –

+1

@AndyHayden nó có thể không hiệu quả, nhưng nó có thể là tốt nhất nếu bạn quan tâm đến tất cả các trang tính, hoặc bạn không quan tâm đến chi phí bổ sung. – CodeMonkey

Các vấn đề liên quan