pandas 중복 열 제거 실현 방법

데이터 준비
만약 에 우리 가 현재 두 개의 데이터 시트 가 있다 고 가정 하면:
① 하나의 데이터 시트 는 세 사람의 id 와 다른 몇 개의 속성 정보 이다.

import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randint(low=1,high=20,size=(3,4)))
data['id'] = range(1,4)
#   :  ,    0 1 2     

② 다른 데이터 시트 는 3 명의 사용자 의 app 작업 로그 정보 로 한 사람 이 여러 개의 app 작업 기록 을 가지 고 있 습 니 다.

sample = pd.DataFrame(np.random.randint(low=1,high=9,size=(7,1)),columns=['hhh'])
sample['id'] = [1,1,2,2,3,3,3]
#   :

문제 설명
① 먼저 저 희 는 모든 사용자 app 작업 기록 수 를 통계 해 야 합 니 다.예 를 들 어 상기 표 에서 사용자 id 가 1 인 사용 자 는 2 개의 조작 기록 이 있 고 사용자 id 가 3 인 사용 자 는 3 개의 조작 기록 이 있 음 을 알 수 있 습 니 다.

s = sample.groupby('id').count()
#   :

② 이때 S 는 id 를 색인 으로 하고 count 된 기록 수 를 value 로 하 는 Series 구조 입 니 다.뒤에 id 열 이 merge 를 진행 해 야 한 다 는 것 을 고려 하여 id 열 을 색인 열 에서 실제 열 로 바 꿔 야 합 니 다.

s = s.reset_index()
#   :

③ S 와 맨 위의 data 표를 merge 합 니 다.우 리 는 중복 되 는 id 열 을 보고 싶 지 않 습 니 다.심지어 우 리 는 문 제 를 S 와 data 표 는 id 열 의 중복 뿐만 아니 라 여러 개의 다른 열 의 중복 도 볼 수 있 습 니 다.그러면 merge 이후 에 중복 열 이 없 도록 어떻게 보장 합 니까?
해결 방안
첫 번 째 아 이 디 어 는 DataFrame.drop('열 명')을 사용 하거나 del DataFrame['열 명']을 사용 하 는 거 예요.
그러나 이 방법 을 사용 하면 모든 중복 열 을 삭제 하고 우리 의 요구 에 미 치지 못 한다.
방법 은:참조StackOverflow 해답

cols_to_use = s.columns.difference(data.columns) # pandas   0.15            ,     S data     ,     merge
pd.merge(data, s[cols_to_use], left_index=True, right_index=True, how='outer')

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기