728x90
[Pandas] group by 했을 때 key외의 다른 컬럼 나오게하기
pandas로 데이터프레임을 group by 했을 때, key로 지정한 컬럼과 집계함수외 다른 컬럼이
데이터 프레임에 출력이 되어야하는데 어떤 방법을 써도 되지가 않았다.
그래서 열심히 서치를 하다가 발견한 방법은 agg를 사용하는 방법이다.
아래와 같이 임의의 데이터 프레임을 생성해주고
import names
from random import *
age = [randint(16, 19) for i in range(0, 101)]
gender = [choice(["male", "female"]) for i in range(0, 101)]
name = [names.get_first_name(gender=g) for g in gender]
cl = [choice(['A','B','C','D']) for i in range(0, 101)]
math = [randint(50, 100) for i in range(0, 101)]
english = [randint(50, 100) for i in range(0, 101)]
dic = {"age":age, "gender":gender, "name":name, "class":cl, "math":math, "english":english}
df = pd.DataFrame(dic)
반의 나이 별 가장 높은 영어 점수를 구하라고 했을 때, 이름도 같이 출력하고 싶다면 다음과 같이 구성할 수 있다.
집계함수를 쓰지 않고 같이 출력하고 싶은 컬럼에 'first' 를 준다.
이 때 주의해야 할 점은 first는 english의 max 열의 name 컬럼의 값이 아닌 첫번째 열의 데이터를 가져온다는 것이다.
last도 사용이 가능한데, 마찬가지로 마지막 열의 데이터를 가져온다.
df.groupby(['class','age']).agg({"english":"max", "name":"first"})
참고
https://stackoverflow.com/questions/49783178/keep-other-columns-when-using-sum-with-groupby
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Pandas] 컬럼 데이터 값 합치기 (0) | 2023.12.26 |
---|---|
[Pandas] 컬럼 데이터 값 분리하기 (str.split, str.get) (1) | 2023.12.21 |
[Pandas] 데이터 프레임 날짜 다루기 (0) | 2023.12.19 |
[Python] Yaml 파일 불러오기 (0) | 2023.12.14 |
[Python] SQLAlchemy (0) | 2023.12.13 |