Computer >> Máy Tính >  >> Lập trình >> Python

Python - Tính tổng các giá trị âm và dương bằng cách sử dụng GroupBy trong Pandas

Hãy để chúng tôi xem làm thế nào để tìm thấy tổng các giá trị âm và dương. Đầu tiên, hãy tạo khung dữ liệu với các giá trị âm và dương -

dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})

Tiếp theo, sử dụng groupby để nhóm trên cơ sở cột Địa điểm -

groupRes = dataFrame.groupby(dataFrame['Place'])

Sử dụng hàm lambda để trả về giá trị âm và dương. Chúng tôi cũng đã thêm các giá trị âm và dương riêng lẻ -

# lambda function
def plus(val):
   return val[val > 0].sum()
def minus(val):
   return val[val < 0].sum()

Ví dụ

Sau đây là mã hoàn chỉnh -

import pandas as pd

# create a DataFrame with temperature in celsius
dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})
print(dataFrame)

# using groupby to group on the basis of place
groupRes = dataFrame.groupby(dataFrame['Place'])

# lambda function
def plus(val):
   return val[val > 0].sum()
def minus(val):
   return val[val < 0].sum()

print(groupRes['Temperature'].agg([('negTemp', minus), ('posTemp', plus)]))

Đầu ra

Điều này sẽ tạo ra mã sau -

      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
           negTemp  posTemp
Place
Atlanta        -15       0
Chicago         -2      10
Dallas           0      50
Denver          -5      30