Hướng dẫn how do you apply a function to an entire dataframe in python? - làm thế nào để bạn áp dụng một hàm cho toàn bộ khung dữ liệu trong python?

Tôi có một khung dữ liệu có thể trông như thế này:

A B C foo bar foo bar bar foo foo bar

Tôi muốn xem qua mọi phần tử của mỗi hàng (hoặc mỗi phần tử của mỗi cột) và áp dụng chức năng sau để lấy DF tiếp theo: tiếp theo

def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar

Có một lớp lót đơn giản có thể áp dụng chức năng cho mỗi ô không?

Đây là một ví dụ đơn giản, vì vậy có thể có một cách dễ dàng hơn để thực hiện ví dụ cụ thể này ngoài việc áp dụng một hàm, nhưng điều tôi thực sự hỏi là làm thế nào để áp dụng một chức năng trong mọi ô trong DataFrame.

Hỏi ngày 13 tháng 9 năm 2016 lúc 17:39Sep 13, 2016 at 17:39

eljusticiero67eljusticiero67eljusticiero67

2.0084 Huy hiệu vàng13 Huy hiệu bạc17 Huy hiệu đồng4 gold badges13 silver badges17 bronze badges

1

Bạn có thể sử dụng def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 3 ngắn gọn cho trường hợp của bạn.

df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar

Một tùy chọn khác là vector hóa chức năng của bạn và sau đó sử dụng phương thức def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 4:

import numpy as np df.apply(np.vectorize(foo_bar)) # A B C #0 wow bar wow bar #1 bar wow wow bar

Normanius

7.4625 Huy hiệu vàng46 Huy hiệu bạc78 Huy hiệu đồng5 gold badges46 silver badges78 bronze badges

Đã trả lời ngày 13 tháng 9 năm 2016 lúc 17:42Sep 13, 2016 at 17:42

PsidompsidomPsidom

202K27 Huy hiệu vàng314 Huy hiệu bạc334 Huy hiệu đồng27 gold badges314 silver badges334 bronze badges

9

Tôi đoán bạn có thể sử dụng def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 5:

>>> df[:] = np.vectorize(foo_bar)(df) >>> df A B C foo bar wow bar bar wow wow bar >>>

Điều này có thể nhanh hơn, vì nó sử dụng def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 6.

Đã trả lời ngày 14 tháng 10 năm 2021 lúc 9:58Oct 14, 2021 at 9:58

U12-ForwardU12-ForwardU12-Forward

66.6K13 Huy hiệu vàng78 Huy hiệu bạc98 Huy hiệu đồng13 gold badges78 silver badges98 bronze badges

DataFrame.apply (func, axis = 0, raw = false, result_type = none, args = (), ** kwargs) [nguồn]#apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)[source]#

Á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 (def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 7) hoặc các cột DataFrame (def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 8). Theo mặc định (def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 9), 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.

Tham sốfuncfunctionfuncfunction

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 0

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

Rawbool, mặc định saibool, default False

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.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 0: Chuyển từng hàng hoặc cột dưới dạng chuỗi cho hàm.

  • df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 1: 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.

result_type {‘mở rộng,‘ giảm, ’phát sóng, không}, không có mặc định{‘expand’, ‘reduce’, ‘broadcast’, None}, default None

Những điều này chỉ hành động khi def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 8 (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.

**kwargs

Các đối số từ khóa bổ sung để truyền dưới dạng từ khóa đối số cho func.

ReturnSseries hoặc dataFrame

Kết quả của việc áp dụng df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 3 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.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 4):

>>> 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.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 5 sẽ mở rộng kết quả giống như danh sách cho các cột của DataFrame

def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 0

Trả về một chuỗi bên trong hàm tương tự như vượt qua df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 5. Các tên cột kết quả sẽ là chỉ số loạt.

def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 1

Vượt qua df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar 7 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.

def foo_bar(x): return x.replace('foo', 'wow') A B C wow bar wow bar bar wow wow bar 2

Làm thế nào để bạn áp dụng một chức năng cho toàn bộ dữ liệu trong Python?

Hàm application () được sử dụng để áp dụng một hàm dọc theo trục của dataFrame. Các đối tượng được truyền đến hàm là các đối tượng chuỗi có chỉ mục là chỉ mục của DataFrame (trục = 0) hoặc cột của DataFrame (trục = 1). is used to apply a function along an axis of the DataFrame. Objects passed to the function are Series objects whose index is either the DataFrame's index (axis=0) or the DataFrame's columns (axis=1).

Làm thế nào để bạn thêm một chức năng vào một khung dữ liệu?

Sê -ri phụ lục Cú pháp Cú pháp để sử dụng Phụ lục trên một chuỗi rất giống với cú pháp DataFrame. Bạn nhập tên của loạt đầu tiên, và sau đó. append () để gọi phương thức. Sau đó, bên trong dấu ngoặc đơn, bạn nhập tên của loạt thứ hai, mà bạn muốn nối vào cuối phần đầu tiên.You type the name of the first Series, and then . append() to call the method. Then inside the parenthesis, you type the name of the second Series, which you want to append to the end of the first.

Điều gì được áp dụng () trong gấu trúc?

Phương thức application () cho phép bạn áp dụng một hàm dọc theo một trong trục của dataFrame, mặc định 0, là trục chỉ mục (hàng).allows you to apply a function along one of the axis of the DataFrame, default 0, which is the index (row) axis.

Làm thế nào để bạn áp dụng một chức năng cho nhiều cột của DataFrame trong Python?

Cú pháp của gấu trúc ...
Func: Hàm áp dụng cho mỗi cột hoặc hàng ..
Trục: trục dọc theo đó chức năng được áp dụng ..
RAW: 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 ..
result_type: 'mở rộng', 'giảm', 'phát', không có;Không có mặc định ..

Chủ đề