Áp dụng một chức năng dọc theo một trục của DataFrame. Các đối tượng được truyền đến hàm là các đối tượng loạt có chỉ mục là chỉ mục DataFrame [axis=0
] hoặc các cột DataFrame [axis=1
]. Theo mặc định [>>> df.apply[np.sqrt]
A B
0 2.0 3.0
1 2.0 3.0
2 2.0 3.0
0], loại trả về cuối cùng được suy ra từ loại trả về của hàm được áp dụng. Mặt khác, nó phụ thuộc vào đối số result_type.
Chức năng để áp dụng cho mỗi cột hoặc hàng.
trục {0 hoặc ‘index, 1 hoặc‘ cột,}, mặc định 0{0 or ‘index’, 1 or ‘columns’}, default 0Trục cùng với chức năng được áp dụng:
0 hoặc ‘Index, áp dụng chức năng cho mỗi cột.
1 hoặc ‘cột,: Áp dụng chức năng cho mỗi hàng.
Xác định nếu hàng hoặc cột được truyền dưới dạng một loạt hoặc đối tượng ndarray:
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.0
1: Chuyển từng hàng hoặc cột dưới dạng chuỗi cho hàm.>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.0
2: Hàm được truyền sẽ nhận các đối tượng ndarray thay thế. Nếu bạn chỉ áp dụng chức năng giảm Numpy, điều này sẽ đạt được hiệu suất tốt hơn nhiều.
Những điều này chỉ hành động khi axis=1
[cột]:
Mở rộng, kết quả giống như danh sách sẽ được biến thành các cột.
Giảm giá: Trả về một loạt nếu có thể thay vì mở rộng kết quả giống như danh sách. Điều này trái ngược với ‘mở rộng.
‘Phát sóng: Kết quả sẽ được phát theo hình dạng ban đầu của DataFrame, chỉ mục và cột ban đầu sẽ được giữ lại.
Hành vi mặc định [không có] phụ thuộc vào giá trị trả về của hàm được áp dụng: kết quả giống như danh sách sẽ được trả về dưới dạng một loạt trong số đó. Tuy nhiên, nếu chức năng áp dụng trả về một chuỗi, chúng được mở rộng thành các cột.
ArgstupletupleĐối số vị trí để chuyển sang Func ngoài mảng/sê -ri.
**kwargsCác đối số từ khóa bổ sung để truyền dưới dạng từ khóa đối số cho func.
ReturnSseries hoặc dataFrameKết quả của việc áp dụng
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.04 dọc theo trục đã cho của DataFrame.
Ghi chú
Các chức năng làm đột biến đối tượng được truyền có thể tạo ra hành vi hoặc lỗi bất ngờ và không được hỗ trợ. Xem đột biến với các phương thức hàm do người dùng [UDF] để biết thêm chi tiết.Mutating with User Defined Function [UDF] methods for more details.
Ví dụ
>>> df = pd.DataFrame[[[4, 9]] * 3, columns=['A', 'B']] >>> df A B 0 4 9 1 4 9 2 4 9
Sử dụng hàm phổ quát không có gì [trong trường hợp này giống như
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.05]:
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.0
Sử dụng chức năng giảm trên một trong hai trục
>>> df.apply[np.sum, axis=0] A 12 B 27 dtype: int64
>>> df.apply[np.sum, axis=1] 0 13 1 13 2 13 dtype: int64
Trả lại một danh sách giống như sẽ dẫn đến một loạt
>>> df.apply[lambda x: [1, 2], axis=1] 0 [1, 2] 1 [1, 2] 2 [1, 2] dtype: object
Vượt qua
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.06 sẽ mở rộng kết quả giống như danh sách sang các cột của DataFrame
>>> df.apply[lambda x: [1, 2], axis=1, result_type='expand'] 0 1 0 1 2 1 1 2 2 1 2
Trả về một chuỗi bên trong hàm tương tự như vượt qua
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.06. Các tên cột kết quả sẽ là chỉ số loạt.
>>> df.apply[lambda x: pd.Series[[1, 2], index=['foo', 'bar']], axis=1] foo bar 0 1 2 1 1 2 2 1 2
Vượt qua
>>> df.apply[np.sqrt] A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.08 sẽ đảm bảo kết quả hình dạng tương tự, cho dù là danh sách hay vô hướng được trả lại bởi hàm và phát nó dọc theo trục. Tên cột kết quả sẽ là bản gốc.
>>> df.apply[lambda x: [1, 2], axis=1, result_type='broadcast'] A B 0 1 2 1 1 2 2 1 2