Cách viết hàm cho dataframe trong python

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 0

Trụ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

raw bool, mặc định Sai

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

result_type {‘mở rộng’, ‘thu nhỏ’, ‘phát sóng’, Không}, mặc định Không có

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

**kwargs

Các đối số từ khóa bổ sung để chuyển thành đối số từ khóa cho func

ReturnsSeries hoặc DataFrame

Kế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

Làm thế nào để áp dụng chức năng cho gấu trúc?

apply nhận một hàm và áp dụng hàm đó cho tất cả các giá trị của chuỗi gấu trúc . convert_dtype. Chuyển đổi dtype theo hoạt động của chức năng. đối số =(). Các đối số bổ sung để chuyển đến hàm thay vì chuỗi. Loại trả lại. Pandas Series sau khi áp dụng chức năng/hoạt động.

Làm cách nào để áp dụng hàm do người dùng xác định cho DataFrame trong Python?

Thông thường có 3 cách để áp dụng các chức năng tùy chỉnh trong Pandas. bản đồ, áp dụng và áp dụng bản đồ. .
bản đồ hoạt động theo từng phần tử trên một chuỗi và được tối ưu hóa để ánh xạ các giá trị thành một chuỗi (e. g. một cột của DataFrame)
applymap hoạt động theo từng yếu tố trên DataFrame và được tối ưu hóa để ánh xạ các giá trị tới DataFrame

DataFrame() trong Python là gì?

DataFrame là cấu trúc dữ liệu được gắn nhãn 2 chiều với các cột thuộc các loại có thể khác nhau . Bạn có thể coi nó giống như một bảng tính hoặc bảng SQL hoặc một lệnh của các đối tượng Sê-ri. Nó thường là đối tượng gấu trúc được sử dụng phổ biến nhất.