<Python>/[DataFrame]

파이썬 Pandas DataFrame .groupby.apply vsv .agg

9566 2023. 3. 8. 15:52
728x90

그룹별로 데이터를 처리해야 하는 경우가 종종 있습니다. Pandas DataFrame에서는 groupby 함수를 이용해 그룹별로 데이터를 묶은 후 처리할 수 있습니다. 이번에는 groupby 함수를 이용해 그룹별로 정렬 및 값을 추가하는 방법에 대해 알아보겠습니다.

(1) 그룹별로 x 칼럼을 기준으로 내림차순 정렬하기 groupby 함수를 이용해 데이터를 그룹화한 후 apply 함수를 이용해 그룹별로 정렬을 수행할 수 있습니다. 아래 예제는 group 칼럼을 기준으로 x 칼럼을 내림차순 정렬하는 코드입니다.

import pandas as pd

# 예제 데이터 생성
df = pd.DataFrame({'group': ['A', 'A', 'B', 'B'], 'x': [3, 1, 2, 4]})

# 그룹별로 x 칼럼을 기준으로 내림차순 정렬
df_sorted = df.groupby('group').apply(lambda x: x.sort_values('x', ascending=False)).reset_index(drop=True)

print(df_sorted)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

  group  x
0     A  3
1     A  1
2     B  4
3     B  2

 

(2) 그룹별로 y 칼럼의 첫번째 값, 마지막 값을 DataFrame에 칼럼 추가하기 groupby 함수와 agg 함수를 이용하면 그룹별로 여러 개의 값을 계산하고 DataFrame에 추가할 수 있습니다. 아래 예제는 group 칼럼을 기준으로 y 칼럼의 첫번째 값과 마지막 값을 계산하여 DataFrame에 'y_first'와 'y_last' 칼럼을 추가하는 코드입니다.

import pandas as pd

# 예제 데이터 생성
df = pd.DataFrame({'group': ['A', 'A', 'B', 'B'], 'y': [10, 20, 30, 40]})

# 그룹별로 y 칼럼의 첫번째 값, 마지막 값을 DataFrame에 추가하기
df_agg = df.groupby('group').agg({'y': ['first', 'last']}).reset_index()
df_agg.columns = ['group', 'y_first', 'y_last']

print(df_agg)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

  group  y_first  y_last
0     A       10      20
1     B       30      40

이와 같이 groupby 함수와 다양한 함수를 조합하여 그룹별로 데이터를 처리할 수 있습니다.

 

728x90