Giả sử bạn muốn áp dụng một hàm tùy chỉnh lên toàn bộ DataFrame (table-wise) bằng phương thức pipe().
Giải pháp
- Tạo DataFrame.
- Định nghĩa hàm
avg(a, b)nhận DataFrame và một tham số thêm. - Gọi
df.pipe(avg, 10)để truyền DataFrame làm đối số đầu tiên choavg.
Mã ví dụ
import pandas as pd
df = pd.DataFrame({'Id': [1,2,3,4,5], 'Mark': [80,90,70,85,90]})
print("DataFrame gốc:\n", df)
def avg(a, b):
# a là DataFrame, b là số 10
return (a + b / 2)
print("\nKết quả df.pipe(avg, 10):")
print(df.pipe(avg, 10))
Kết quả
DataFrame gốc:
Id Mark
0 1 80
1 2 90
2 3 70
3 4 85
4 5 90
Kết quả df.pipe(avg, 10):
Id Mark
0 6.0 85.0
1 7.0 95.0
2 8.0 75.0
3 9.0 90.0
4 10.0 95.0
Giải thích:
pipe(func, *args, **kwargs)gọifunc(df, *args, **kwargs).- Hàm
avg(a, b)nhậna=df,b=10. - Phép tính
(a + b/2)thực hiện broadcast: mỗi ô cộng thêm 5 (10/2). pipehữu ích cho chuỗi xử lý (method chaining) và truyền DataFrame vào hàm ngoài.