Các đối tượng được truyền cho hàm là các đối tượng Sê-ri có chỉ mục là chỉ mục của Khung dữ liệu (axis=0) hoặc cột của Khung dữ liệu (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), kiểu trả về cuối cùng được suy ra từ kiểu trả về của hàm được áp dụng. Mặt khác, nó phụ thuộc vào đối số result_type
Tham số chức năng hàm sốHàm áp dụng cho từng cột hoặc hàng
trục {0 hoặc 'chỉ mục', 1 hoặc 'cột'}, mặc định 0Trục dọc theo đó chức năng được áp dụng
0 hoặc 'chỉ mục'. áp dụng chức năng cho từng cột
1 hoặc 'cột'. áp dụng chức năng cho mỗi hàng
Xác định xem hàng hoặc cột có được truyền dưới dạng đối tượng Sê-ri hoặc ndarray không
>>> 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 Sê-ri 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. thay vào đó, chức năng được truyền sẽ nhận các đối tượng ndarray. 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 chuyển thành cột
'giảm'. trả về một Sê-ri nếu có thể thay vì mở rộng các kết quả giống như danh sách. Điều này trái ngược với 'mở rộng'
'phát tin'. kết quả sẽ được phát tới 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. các kết quả giống như danh sách sẽ được trả về dưới dạng Chuỗi các kết quả đó. Tuy nhiên, nếu hàm áp dụng trả về một Sê-ri, chúng sẽ được mở rộng thành các cột
đối số tupleĐối số vị trí để chuyển đến func ngoài mảng/sê-ri
**kwargsCác đối số từ khóa bổ sung để chuyển thành đối số từ khóa 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.0 4 dọc theo trục đã cho của Khung dữ liệu
Xem thêm
Đối với các hoạt động theo nguyên tố
Chỉ thực hiện các thao tác loại tổng hợp
Chỉ thực hiện các thao tác chuyển loại
ghi chú
Các hàm thay đổi đối tượng được truyền có thể tạo ra lỗi hoặc hành vi không mong muốn và không được hỗ trợ. Xem để biết thêm chi tiết
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 một hàm phổ quát numpy (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.0 8)
>>> 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
________số 8_______
Trả lại một danh sách giống như sẽ dẫn đến một chuỗi
>>> 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.0 9 sẽ mở rộng kết quả giống như danh sách sang các cột của Khung dữ liệu
>>> 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 Sê-ri bên trong hàm tương tự như chuyển >>> df.apply(np.sqrt) A B 0 2.0 3.0 1 2.0 3.0 2 2.0 3.0 9. Tên cột kết quả sẽ là chỉ mục Sê-ri
>>> df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1) foo bar 0 1 2 1 1 2 2 1 2
Việc vượt qua >>> df.apply(np.sum, axis=0) A 12 B 27 dtype: int64 1 sẽ đảm bảo kết quả có hình dạng giống nhau, cho dù hàm trả về dạng danh sách hay dạng vô hướng và phát nó dọc theo trục. Tên cột kết quả sẽ là bản gốc