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

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?

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

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?

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

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?

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