merge_asof 사용하기
pandas.merge_asof()는 시간을 몇만배로 단축시킬 수 있는 굉장히 유용한 함수이다.
홈페이지에 보면,
This is similar to a left-join except that we match on nearest key rather than equal keys. Both DataFrames must be sorted by the key
라고 나와있는데 설명처럼 left join과 유사하다.
파라미터도 join과 비슷하게 left, right, on, left_on, right_on, by, suffixes, tolerance 등이 있다.
기본적인 파라미터는 직관적으로 이해할 수 있다고 하면 merge_asof만의 특징적인 파라미터는 아래와 같다.
1. suffixes: merge할 때 left df, right df의 동일한 컬럼명이 있으면 이를 각각 어떻게 나타낼지 표시할 파라미터
2. tolerance: on의 범위를 지정해주는 파라미터
3. allow_exact_matches: on을 기준으로 정확히 일치하는 값도 허용할지에 대한 파라미터
예시 코드
df = pd.merge_asof(
left=dfsao2.sort_values(by='dt'),
right=dfspo2.sort_values(by='dt'),
on='dt', by='hid',
direction='nearest',
tolerance=pd.Timedelta('10 minute'), allow_exact_matches=False,
suffixes=('_sao2', '_spo2'))
반응형