> 백엔드 개발 > 파이썬 튜토리얼 > 간격 인덱싱을 사용하여 날짜/시간 범위가 겹치는 DataFrame을 조인하는 방법은 무엇입니까?

간격 인덱싱을 사용하여 날짜/시간 범위가 겹치는 DataFrame을 조인하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-15 16:16:15
원래의
113명이 탐색했습니다.

How to Join DataFrames with Overlapping Datetime Ranges Using Interval Indexing?

간격 인덱싱을 사용하여 범위가 겹치는 데이터 프레임 결합

날짜 시간 범위를 나타내는 공통 열이 있는 두 개의 데이터 프레임 df_1 및 df_2가 주어지면, 우리는 특정 조건을 사용하여 이들을 조인하는 것을 목표로 합니다. df_1의 날짜/시간 열 값은 다음에 속해야 합니다. df_2에 지정된 범위.

df_1

  timestamp              A          B
0 2016-05-14 10:54:33    0.020228   0.026572
1 2016-05-14 10:54:34    0.057780   0.175499
2 2016-05-14 10:54:35    0.098808   0.620986
3 2016-05-14 10:54:36    0.158789   1.014819
4 2016-05-14 10:54:39    0.038129   2.384590


df_2

  start                end                  event    
0 2016-05-14 10:54:31  2016-05-14 10:54:33  E1
1 2016-05-14 10:54:34  2016-05-14 10:54:37  E2
2 2016-05-14 10:54:38  2016-05-14 10:54:42  E3
로그인 후 복사

해결책:

이를 달성하기 위해 간격 인덱싱을 사용할 수 있습니다. 간격 인덱싱은 df_2에 지정된 범위를 기반으로 빈을 생성하고 해당 빈에 속하는 df_1의 타임스탬프에 라벨을 할당합니다.

import pandas as pd

# Convert start and end columns to IntervalIndex
df_2.index = pd.IntervalIndex.from_arrays(df_2['start'], df_2['end'], closed='both')

# Get the event associated with each timestamp in df_1
df_1['event'] = df_1['timestamp'].apply(lambda x: df_2.iloc[df_2.index.get_loc(x)]['event'])
로그인 후 복사

출력:

            timestamp         A         B event
0 2016-05-14 10:54:33  0.020228  0.026572    E1
1 2016-05-14 10:54:34  0.057780  0.175499    E2
2 2016-05-14 10:54:35  0.098808  0.620986    E2
3 2016-05-14 10:54:36  0.158789  1.014819    E2
4 2016-05-14 10:54:39  0.038129  2.384590    E3
로그인 후 복사

위 내용은 간격 인덱싱을 사용하여 날짜/시간 범위가 겹치는 DataFrame을 조인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿