Pandas에서 DataFrame의 행을 리스트(list) 형태로 그룹화하려면 groupby()와 함께 apply() 함수를 사용하면 됩니다. 이 방법을 활용하면 특정 열을 기준으로 데이터를 묶고, 각 그룹에 속한 값들을 하나의 리스트로 정리할 수 있습니다.
1. 라이브러리 불러오기
먼저 필요한 Pandas 라이브러리를 임포트합니다.
import pandas as pd
2. 샘플 DataFrame 생성
예제를 위해 'Car'와 'Units' 두 개의 열을 가진 DataFrame을 만들어 보겠습니다.
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)3. apply(list)로 행 그룹화하기
'Car' 열을 기준으로 그룹화한 뒤, 'Units' 값을 리스트 형태로 변환합니다.
dataFrame = dataFrame.groupby('Car')['Units'].apply(list)전체 예제 코드
지금까지의 과정을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
print("DataFrame ...\n", dataFrame)
# DataFrame을 리스트로 그룹화
dataFrame = dataFrame.groupby('Car')['Units'].apply(list)
# 결과 출력
print("\nDataFrame ...\n", dataFrame)실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
DataFrame ...
Car Units
0 BMW 100
1 Lexus 150
2 Audi 110
3 Mustang 80
4 Bentley 110
5 Jaguar 90
DataFrame ...
Car
Audi [110]
BMW [100]
Bentley [110]
Jaguar [90]
Lexus [150]
Mustang [80]
Name: Units, dtype: object결과 해설
출력 결과를 보면 각 자동차 브랜드(Car)가 인덱스가 되고, 해당 브랜드의 판매 수량(Units)이 리스트 형태로 저장된 것을 확인할 수 있습니다. 예를 들어 Audi는 [110], BMW는 [100]처럼 각 그룹의 값들이 리스트로 묶였습니다.
만약 동일한 브랜드가 여러 번 등장하는 데이터라면, 해당 브랜드의 모든 수량이 하나의 리스트에 함께 담기게 됩니다. 예를 들어 'Audi'가 세 번 등장해 [110, 120, 130]과 같은 결과를 얻을 수 있습니다.
마무리
groupby()와 apply(list)의 조합은 범주형 데이터를 기준으로 값을 모아 리스트로 변환할 때 매우 유용합니다. 데이터 전처리나 집계 작업에서 자주 활용되니 꼭 익혀두시길 추천합니다.