본문 바로가기
파이썬

파이썬 pandas-열 값을 기준으로 거의 중복 된 행 병합

by º기록 2020. 11. 6.
반응형

하나의 값을 제외하고 서로 거의 중복되는 여러 행이있는 pandas 데이터 프레임이 있습니다. 내 목표는 숫자 값을 합산하지 않고 이러한 행을 단일 행으로 병합하거나 "통합"하는 것입니다.

다음은 내가 작업중인 작업의 예입니다.

Name   Sid   Use_Case  Revenue
A      xx01  Voice     $10.00
A      xx01  SMS       $10.00
B      xx02  Voice     $5.00
C      xx03  Voice     $15.00
C      xx03  SMS       $15.00
C      xx03  Video     $15.00

그리고 내가 원하는 것은 다음과 같습니다.

Name   Sid   Use_Case            Revenue
A      xx01  Voice, SMS          $10.00
B      xx02  Voice               $5.00
C      xx03  Voice, SMS, Video   $15.00

"수익"열을 합산하고 싶지 않은 이유는 내 테이블이 "Use_Case"별로 다른 값을 갖는 대신 "수익"이 여러 번 나열되는 여러 기간에 걸쳐 피벗을 수행 한 결과이기 때문입니다. .

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? groupby () 함수를 살펴 봤지만 여전히 잘 이해하지 못합니다.

 

해결 방법

 


df = df.groupby('Name').agg({'Sid':'first', 
                             'Use_Case': ', '.join, 
                             'Revenue':'first' }).reset_index()

#change column order                           
print df[['Name','Sid','Use_Case','Revenue']]                              
  Name   Sid           Use_Case Revenue
0    A  xx01         Voice, SMS  $10.00
1    B  xx02              Voice   $5.00
2    C  xx03  Voice, SMS, Video  $15.00


df = df.groupby(['Name','Sid','Revenue'])['Use_Case'].apply(', '.join).reset_index()

#change column order                           
print df[['Name','Sid','Use_Case','Revenue']]                              
  Name   Sid           Use_Case Revenue
0    A  xx01         Voice, SMS  $10.00
1    B  xx02              Voice   $5.00
2    C  xx03  Voice, SMS, Video  $15.00

 

참조 페이지 https://stackoverflow.com/questions/36271413

 

 

반응형

댓글