범위를 기준으로 병합을 수행하는 함수. 엑셀의 index와 match 조합과 비슷하다.
import pandas as pd
data1 = {'이름': ['라', '나', '다', '가', '마'], '점수': [60, 72, 80, 88, 95]}
data2 = {'점수': [0, 70, 80, 90], '학점': ['F', 'C', 'B', 'A']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
pd.merge_asof(df1, df2, on='점수')
pandas merge_asof
pd.merge_asof(left, right, on=None, by=None, allow_exact_matches=True, direction='backward')
left (인수는 데이터프레임 혹은 시리즈)
병합할 객체1
right (인수는 데이터프레임 혹은 시리즈)
병합할 객체2
on (인수는 열의 레이블)
유사일치로 병합할 기준이 되는 열의 레이블을 지정한다.
- 반드시 하나의 열만 지정해야 한다.
- 숫자나 datetime 같이 유사일치가 가능한 자료형의 열이어야 한다.
- 오름차순으로 정렬이 되어 있어야 한다.
- 기본값은 존재하나 기본값을 사용하지말고 지정하도록 하자.
by (인수는 열의 레이블 또는 열의 레이블의 리스트)
정확히 일치시킬 열을 지정하는 매개변수
allow_exact_matches (인수는 bool / 기본값은 True)
경계값을 어느 그룹에 넣어 병합하느냐를 결정하는 매개변수
direction (인수는 ‘backward’, ‘forward’, ‘nearest’ / 기본값은 ‘backward’)
경계를 기준으로 유사일치시킬 방향을 결정하는 매개변수
‘backward’는 가의 88점보다 작은 점수중 가장 큰 80을 찾아 B학점을 부여한다. 기본값이다.
‘forward’는 가의 88점보다 큰 점수중 가장 작은 90을 찾아 A학점을 부여한다.
‘nearest’는 가의 88점과 가장 가까운 90을 찾아 A학점을 부여한다.
그외 많은 매개변수들이 있다. 더 궁금하면 아래 링크를 참고
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.merge_asof.html
드디어 판다스 책이 출판되었습니다.
https://product.kyobobook.co.kr/detail/S000214350781
'판다스 > 함수 cheat sheet' 카테고리의 다른 글
[pandas] concat (0) | 2022.12.30 |
---|---|
[pandas] sort_values (0) | 2022.12.30 |
[pandas] merge (0) | 2022.12.29 |
[pandas] read_excel (0) | 2022.12.29 |
[pandas] #02 iloc 인덱싱 (0) | 2022.02.19 |