Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Tính tổng giá trị âm và dương riêng biệt theo nhóm (GroupBy) trong Pandas

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 minus lọc val < 0 rồi sum; plus lọc val > 0 rồ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.