Tính tổng riêng biệt của giá trị âm và dương trong cột số, nhóm theo cột phân loại. Sử dụng groupby() kết hợp hàm lambda tùy chỉnh.
Tạo DataFrame nhiệt độ
import pandas as pd
dataFrame = pd.DataFrame({
'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver', 'Dallas', 'Atlanta'],
'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]
})
print("DataFrame gốc:\n", dataFrame)
Định nghĩa hàm tính tổng dương/âm
def plus(val):
return val[val > 0].sum()
def minus(val):
return val[val < 0].sum()
Áp dụng agg() với các hàm tùy chỉnh
groupRes = dataFrame.groupby(dataFrame['Place'])
result = groupRes['Temperature'].agg([('negTemp', minus), ('posTemp', plus)])
print("\nTổng nhiệt độ âm/dương theo địa điểm:\n", result)
Kết quả
DataFrame gốc:
Place Temperature
0 Chicago -2
1 Denver 30
2 Atlanta -5
3 Chicago 10
4 Dallas 30
5 Denver -5
6 Dallas 20
7 Atlanta -10
Tổng nhiệt độ âm/dương theo địa điểm:
negTemp posTemp
Place
Atlanta -15 0
Chicago -2 10
Dallas 0 50
Denver -5 30
Giải thích
groupby('Place')nhóm theo địa điểm.agg([('negTemp', minus), ('posTemp', plus)])áp dụng hai hàm, đặt tên cột kết quả.- Hàm
minuslọcval < 0rồi sum;pluslọcval > 0rồi sum. - Atlanta chỉ có giá trị âm (-5, -10) → negTemp=-15, posTemp=0.
Cách này linh hoạt cho các phép tập hợp tùy chỉnh trên nhóm.