DataFrame GroupBy를 하고 apply를 통해 내가 지정한 함수로 계산이 가능하도록 구현이 가능하다. 보통은 groupby('columnname').sum()
을 통해 특정 컬럼에 대해서 그룹별로 합, 평균, 편차 등을 계산하게 된다. 조금더 복잡한 계산을 할 수 있을까?
여기서 복잡하다는 말은 특정 컬럼은 그룹별로 string의 리스트로 반환될 수 있다. 숫자의 경우 단순히 합을 계산하거나 평균을 계산하면 되지만, string은 concat을 하거나, dict, list의 형태로 반환을 해야하는 경우가 있다.
def f(x):
x = x.C.unique()[0] # C컬럼에서 unique한 값을 빼내고 첫번째 값으로 (groupby로 포함해도 상관없음)
return pd.Series(dict(A = x['A'].sum(),
B = x['B'].sum(),
C = "{%s}" % ', '.join(x['C'])))
df.groupby('A').apply(f)
"""
A B C
A
1 2 1.615586 {This, string}
2 4 0.421821 {is, !}
3 3 0.463468 {a}
4 4 0.643961 {random}
"""
'우리는 개발자 > Data Science' 카테고리의 다른 글
[Python] Python3 SimpleHTTPServer, http.server (0) | 2019.09.07 |
---|---|
[Python] Hive 테이블 데이터 가져오기 (subprocess, commands) (0) | 2019.09.07 |
[Pandas] DataFrame apply udf를 이용할때 여러개의 컬럼을 넘기고 받는 방법 (multiple columns apply udf) (0) | 2019.09.06 |
[Pandas] DataFrame apply 함수를 Paralleization 하는 방법 (병렬처리 하는 방법) (1) | 2019.09.06 |
[Pandas] 에서 apply의 얼마나 처리되었는지 진행상황을 확인하는 방법 (tqdm 사용) (0) | 2019.09.06 |