Như đã đề cập trong các bình luận, một lỗi bạn đang mắc phải là bạn đang lặp qua một danh sách trống.
Đây là cách tôi sẽ làm điều đó, sử dụng một ví dụ về có 5 tệp Excel giống hệt nhau được thêm vào từng tệp khác.
[1] Nhập khẩu:
import os
import pandas as pd
[2] Tệp danh sách:
path = os.getcwd[]
files = os.listdir[path]
files
Output:
['.DS_Store',
'.ipynb_checkpoints',
'.localized',
'Screen Shot 2013-12-28 at 7.15.45 PM.png',
'test1 2.xls',
'test1 3.xls',
'test1 4.xls',
'test1 5.xls',
'test1.xls',
'Untitled0.ipynb',
'Werewolf Modelling',
'~$Random Numbers.xlsx']
[3] Chọn các tệp 'XLS':
files_xls = [f for f in files if f[-3:] == 'xls']
files_xls
Output:
['test1 2.xls', 'test1 3.xls', 'test1 4.xls', 'test1 5.xls', 'test1.xls']
[4] Khởi tạo DataFrame trống:
df = pd.DataFrame[]
[5] Vòng lặp qua danh sách các tệp để nối với DataFrame trống:
for f in files_xls:
data = pd.read_excel[f, 'Sheet1']
df = df.append[data]
[6] Tận hưởng DataFrame mới của bạn. :-]
df
Output:
Result Sample
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
5 f 6
6 g 7
7 h 8
8 i 9
9 j 10
Pandas có một vài hạn chế khi làm việc với nhiều tờ trong một tập tin Excel. Tuy nhiên, có một vụ hack nhỏ có thể giúp chúng tôi làm việc xung quanh những hạn chế này và làm cho việc làm việc với nhiều tờ hiệu quả hơn. Một trong những thách thức khi làm việc với nhiều tờ trong gấu trúc là theo dõi dữ liệu trang tính đến từ đó. Chúng ta có thể giảm bớt vấn đề này bằng cách tạo một từ điển tên trang và khung dữ liệu. Chúng ta có thể tham khảo các tờ theo tên thay vì ghi nhớ số trang nào tương ứng với DataFrame. Liên quan: Một cách tốt hơn để tóm tắt các khung dữ liệu gấu trúc. A Better Way to Summarize Pandas Dataframes. Một giới hạn khác khi làm việc với nhiều tờ trong gấu trúc là hàm read_excel [] chỉ có thể đọc một tờ cùng một lúc. Nếu chúng ta muốn đọc dữ liệu từ các trang khác nhau, chúng ta phải sử dụng hàm read_excel [] nhiều lần. Chúng ta có thể làm việc xung quanh giới hạn này bằng cách đặt đối số tên trang tính không trong hàm read_excel. Hàm trên tạo ra một từ điển với tên trang tính trong các tệp Excel dưới dạng các khóa và dataFrame dưới dạng giá trị. Bây giờ bạn có thể truy cập vào DataFrame với tên trang của nó.Bí quyết để đọc hiệu quả các tệp Excel với nhiều tờ trong gấu trúc
df_dict = pd.read_excel['/path/to/exel.xlsx', sheet_name=None]
path = os.getcwd[]
files = os.listdir[path]
files
0path = os.getcwd[]
files = os.listdir[path]
files
1Kết hợp nhiều tờ trong tệp Excel bằng cách sử dụng gấu trúc
Thường thì các nhà khoa học và nhà phân tích dữ liệu nhận được các tệp Excel với nhiều tờ. Tuy nhiên, chúng chỉ là một phân vùng hợp lý của một bộ dữ liệu lớn hơn trong hầu hết các trường hợp.
Chẳng hạn, một bộ dữ liệu được phân vùng theo tháng và được lưu trữ trong các bảng riêng lẻ chứ không phải là một tệp lớn.
Cũng có thể kết hợp các bảng kết hợp thuận tiện trong một tệp Excel bằng phương thức giá trị của DF_DICT.
path = os.getcwd[]
files = os.listdir[path]
files
2Xin đừng lặp qua tên trang tính để đọc chúng
Trước khi tôi học được mánh khóe này, thực tế tôi đã lặp lại các tên trang tính và đọc chúng riêng lẻ. Đoạn mã để làm điều này sẽ trông giống như bên dưới.
path = os.getcwd[]
files = os.listdir[path]
files
3Mã này thực hiện công việc không có nhiều khó khăn. Tuy nhiên, chúng tôi có thể loại bỏ các dòng mã bổ sung này bằng cách đặt đơn giản là đặt feetName = không có khi đọc tệp.