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

Python - รวมค่าลบและค่าบวกโดยใช้ GroupBy ใน Pandas


ให้เราดูวิธีการหาผลรวมของค่าลบและค่าบวก ขั้นแรก สร้างดาต้าเฟรมที่มีค่าบวกและลบ -

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

ต่อไป ใช้ groupby เพื่อจัดกลุ่มตามคอลัมน์ Place -

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

ใช้ฟังก์ชันแลมบ์ดาเพื่อส่งกลับค่าบวกและค่าลบ เราได้เพิ่มค่าบวกและค่าลบทีละค่า -

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

ตัวอย่าง

ต่อไปนี้เป็นรหัสที่สมบูรณ์ -

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)]))

ผลลัพธ์

สิ่งนี้จะสร้างรหัสต่อไปนี้ -

      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