DataFrame.merge
DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=None, indicator=False, validate=None)
두 데이터프레임 또는 시리즈를 병합하여 하나의 데이터프레임 생성
시리즈의 경우 기본적으로 인덱스를 이용하여 병합
* 주의 두 키 컬럼에 null 값이 있을 경우, 해당 행끼리 매칭
Parameters:
1. right : 병합할 대상 DataFrame 또는 Series 객체
2. how (default 'inner') : 병합 방식 설정
- 'left': 왼쪽 데이터프레임의 키만 사용
- 'right': 오른쪽 데이터프레임의 키만 사용
- 'outer': 두 데이터프레임 키의 합집합 사용
- 'inner': 두 데이터프레임 키의 교집합 사용
- 'cross': 두 데이터프레임의 카테시안 곱
3. on (두 데이터프레임의 공통 컬럼이 기본값) : 병합할 키로 사용할 컬럼 또는 인덱스 이름
4. left_on, right_on : 각각 왼쪽/오른쪽 데이터프레임에서 병합 키로 사용할 컬럼의 이름이 다를 때 이용
5. left_index, right_index (default False) : 각각 왼쪽/오른쪽 데이터프레임의 인덱스를 병합 키로 사용할지 여부
6.sort (default False) : 병합된 결과에서 키를 사전순으로 정렬할지 여부
7. suffixes (default: ('_x', '_y') : 겹치는 컬럼 이름에 추가할 접미사
8. copy (default True) : 복사 여부, False 설정 시 가능하면 복수를 피하기 때문에 원본 데이터프레임이 수정될 가능성이 있음
9. indicator (기본값: False) : 병합 정보 컬럼 추가
- True : _merge 컬럼이 추가됨
- _merge 값: left_only, right_only, both
10. validate : 병합 키에 대해 특정 타입 검증
예를 들어 one_to_one 병합을 기대했는데 실제로는 many_to_many 병합이 발생하면 오류 발생
- 'one_to_one': 양쪽 키가 고유
- 'one_to_many': 왼쪽 키가 고유, 오른쪽 키는 중복 가능
- 'many_to_one': 오른쪽 키가 고유, 왼쪽 키는 중복 가능
- 'many_to_many': 중복 허용
- Returns: 병합된 데이터프레임 (DataFrame)
DataFrame.join
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False, validate=None)
다른 DataFrame이나 Series의 컬럼을 현재 데이터프레임에 병합
기본적으로 인덱스-인덱스로 병합하며, 특정 컬럼(on)을 지정할 수도 있음
다중 병합 - 리스트로 여러 DataFrame을 한 번에 병합 가능
Parameters:
1. other : 병합 대상
- DataFrame: 인덱스 기준 병합
- Series: 병합 대상이 되는 시리즈는 이름(name)이 있어야 하며, 결과 데이터프레임에서 해당 이름이 컬럼 이름으로 사용됨.
- 리스트: DataFrame 또는 Series의 리스트를 전달하면 여러 개를 동시에 병합 가능
import pandas as pd
# 다중 병합 예시
df1 = pd.DataFrame({'value1': [10, 20, 30]}, index=['A', 'B', 'C'])
df2 = pd.DataFrame({'value2': [15, 25, 35]}, index=['B', 'C', 'D'])
df3 = pd.DataFrame({'value3': [100, 200, 300]}, index=['A', 'B', 'C'])
result_multi = df1.join([df2, df3], how='outer')
print(result_multi)
# 결과
value1 value2 value3
A 10.0 NaN 100.0
B 20.0 15.0 200.0
C 30.0 25.0 300.0
D NaN 35.0 NaN
2. on : 병합 키
- 값 유형: 문자열, 문자열 리스트, 배열
- 다중 값일 경우, other는 MultiIndex여야 함
3. how (default 'left'): 병합 방식
- 'left': 호출한 데이터프레임의 인덱스 또는 컬럼 기준.
- 'right': 병합 대상(other)의 인덱스 기준.
- 'outer': 두 데이터프레임의 인덱스 합집합.
- 'inner': 두 데이터프레임의 인덱스 교집합.
- 'cross': 두 데이터프레임의 카테시안 곱.
4. lsuffix, rsuffix : 컬럼 이름 구분하는 접미사
5. sort(기본값: False) : 병합 후 결과를 병합 키를 기준으로 정렬할지 여부
- True: 결과를 사전순으로 정렬
- False: 병합 방식(how)에 따라 정렬
6. validate : 병합 키 유효성 검증
- 'one_to_one' 또는 '1:1': 양쪽 병합 키가 고유
- 'one_to_many' 또는 '1:m': 왼쪽 키가 고유
- 'many_to_one' 또는 'm:1': 오른쪽 키가 고유
- 'many_to_many' 또는 'm:m': 중복 키 허용
Returns : 병합된 데이터프레임 (DataFrame)
'Python' 카테고리의 다른 글
[pandas] iloc와 loc 인덱싱, 사용법과 차이점 (0) | 2025.01.09 |
---|---|
[pandas] transform 함수로 데이터 변환하기 (0) | 2024.12.11 |
[pandas] groupby 정리 (0) | 2024.12.11 |
[pandas] DataFrame.rank, 관련 문제 Leetcode 《178. Rank Scores》 (0) | 2024.12.03 |