Python - pandas - 인덱스가 같은 시리즈와 데이터프레임 합치는 방법 (merge, join)

반응형

데이터 프레임 합치기

인덱스가 같은 시리즈와 데이터프레임을 합쳐야 할 때 어떻게 해야할까?

 

예시

예시로 이해해봅시다.

  • 영화의 제목이 인덱스인 평가 점수가 담겨있는 시리즈
  • 영화의 제목이 인덱스인 평가 인원수가 담겨있는 시리즈


인덱스가 같은 시리즈 합치는 방법 1

  • 인덱스를 기준으로 merge 하기
  • merge( left_index=True, right_index=True ) : 두 데이터의 인덱스를 이용하여 합칠 수 있음
ratings_mean_count_df = pd.merge(ratings_df_mean, ratings_df_count, left_index=True, right_index=True)
# 두 개의 이름이 같은 인덱스를 이용하여 merge

ratings_mean_count_df.columns= [ 'mean', 'count' ]
# 합쳐진 데이터프레임의 컬럼명 변경 [ 평점 평균, 평가수 ]

 

 pandas merge 기본 설명

  • 두 개의 데이터를 합칠 때 사용
  • pandas.merge( df1, df2, on='연결고리칼럼', how='전체표시할df')
    • on : 동일한 칼럼명을 기준으로 서로 다른 칼럼을 가지는 데이터프레임이 있어도 합칠 수 있음
      • 동일함 칼럼명의 값이 같지 않을 경우 값은 제거
    • how : 기준이 되는 데이터프레임을 모두 표시. left=df1, right=df2
      • 병합시 기준 데이터프레임이 NaN값을 가지면 해당 값은 제거

인덱스가 같은 시리즈 합치는 방법 2

  • 데이터프레임화해서 join 함수를 이용
  • 데이터프레임1.join(데이터프레임2) : 데이터프레임을 하나로 합칠 수 있음
    • 판다스의 데이터프레임에서만 사용 가능
    • 주의!!! 인덱스가 같아야 함
ratings_df_mean1 = ratings_df_mean.to_frame()
ratings_df_mean1.columns = ['mean']
ratings_df_count1 = ratings_df_count.to_frame()
ratings_df_count1.columns = ['count']
# 각각의 시리즈 데이터 데이터프레임화
# 데이터프레임화 된 데이터 컬럼명 변경

ratings_df_mean_count1 = ratings_df_mean1.join(ratings_df_count1)
# join을 이용하여 데이터프레임 합치기

 

join 함수 기본 설명

  • 하나의 데이터로 변경
  • ' '.join을 사용
  • '구분자' 안에 들어갈 구분자의 값을 넣어주면 해당 값을 기준으로 연결 

 

반응형