Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python - Pandas에서 GroupBy를 사용하여 음수 및 양수 값 합계

<시간/>

음수 값과 양수 값의 합을 찾는 방법을 살펴보겠습니다. 처음에는 양수 및 음수 값으로 데이터 프레임을 만듭니다. -

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