Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การใช้ apply() กับทุกแถวใน Pandas DataFrame ด้วย Python

ในบทช่วยสอนนี้ เราจะเรียนรู้การใช้เมธอด apply() ของ DataFrame เพื่อนำฟังก์ชันไปใช้กับทุกแถว (row) ตัวอย่างเช่น ถ้าต้องการคูณค่าจากหลายคอลัมน์แล้วเพิ่มเป็นคอลัมน์ใหม่ apply() จะช่วยให้ทำได้สะดวก

apply()

ใช้สำหรับนำฟังก์ชันไปประยุกต์กับทุกแถวของ DataFrame

ตัวอย่างที่ 1: ใช้ฟังก์ชันที่สร้างเอง

import pandas as pd

# function to multiply
def multiply(x, y):
    return x * y

# creating a dictionary for DataFrame
data = {
    'Maths': [10, 34, 53],
    'Programming': [23, 12, 43]
}

# creating DataFrame
data_frame = pd.DataFrame(data)

# displaying DataFrame
print('--------------------Before------------------')
print(data_frame)
print()

# applying the multiply function
# axis=1 หมายถึงทำงานแถวต่อแถว (row-wise)
data_frame['Multiply'] = data_frame.apply(lambda row: multiply(row['Maths'], row['Programming']), axis=1)

# displaying DataFrame
print('--------------------After------------------')
print(data_frame)

ผลลัพธ์

--------------------Before------------------
   Maths  Programming
0     10           23
1     34           12
2     53           43
--------------------After------------------
   Maths  Programming  Multiply
0     10           23       230
1     34           12       408
2     53           43      2279

ตัวอย่างที่ 2: ใช้ฟังก์ชันสำเร็จรูป เช่น sum

import pandas as pd

data = {
    'Maths': [10, 34, 53],
    'Programming': [23, 12, 43]
}
data_frame = pd.DataFrame(data)

print('--------------------Before------------------')
print(data_frame)
print()

# using built-in sum function
data_frame['Sum'] = data_frame.apply(sum, axis=1)

print('--------------------After------------------')
print(data_frame)

ผลลัพธ์

--------------------Before------------------
   Maths  Programming
0     10           23
1     34           12
2     53           43
--------------------After------------------
   Maths  Programming  Sum
0     10           23   33
1     34           12   46
2     53           43   96

ตัวอย่างที่ 3: ใช้ฟังก์ชันจาก NumPy

import pandas as pd
import numpy as np

data = {
    'Maths': [10, 34, 53],
    'Programming': [23, 12, 43]
}
data_frame = pd.DataFrame(data)

print('--------------------Before------------------')
print(data_frame)
print()

# using np.sum
data_frame['Sum'] = data_frame.apply(np.sum, axis=1)

print('--------------------After------------------')
print(data_frame)

ผลลัพธ์

--------------------Before------------------
   Maths  Programming
0     10           23
1     34           12
2     53           43
--------------------After------------------
   Maths  Programming  Sum
0     10           23   33
1     34           12   46
2     53           43   96

สรุป

เมธอด apply() ช่วยให้เราสามารถนำฟังก์ชัน (ไม่ว่าจะเป็นฟังก์ชันที่เขียนเอง, built-in, หรือจาก NumPy) ไปใช้กับแต่ละแถวของ DataFrame ได้อย่างยืดหยุ่น โดยระบุ axis=1 สำหรับการทำงานแบบแถวต่อแถว หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็น