Pandas에서 범위 기반 조인 최적화
데이터 프레임으로 작업할 때 범위 조건에 따라 조인을 수행해야 하는 경우가 많습니다. Pandas의 일반적인 접근 방식은 더미 열을 만들고 여기에 조인하고 불필요한 행을 필터링하는 것입니다. 그러나 이 솔루션은 특히 대규모 데이터세트의 경우 계산 비용이 많이 들 수 있습니다.
다행히도 Pandas에는 범위 기반 조인을 달성하는 더 효율적이고 우아한 방법이 있습니다.
numpy 브로드캐스팅 사용
가장 간단한 방법은 numpy 브로드캐스팅을 활용하는 것입니다. 여기에는 Pandas 데이터프레임을 numpy 배열로 변환하고 부울 연산을 사용하여 일치하는 행을 식별하는 작업이 포함됩니다.
<code class="python">import numpy as np a = A.A_value.values bh = B.B_high.values bl = B.B_low.values i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh)) pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1)</code>
이 접근 방식은 비용이 많이 드는 행 반복을 방지하므로 매우 효율적입니다.
왼쪽으로 확장 조인
이 솔루션을 왼쪽 조인으로 확장하기 위해 데이터 프레임 B의 어떤 행과도 일치하지 않는 데이터 프레임 A의 나머지 행을 추가할 수 있습니다.
<code class="python">pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1).append( A[~np.in1d(np.arange(len(A)), np.unique(i))], ignore_index=True, sort=False )</code>
이렇게 하면 모든 데이터 프레임 A의 행은 데이터 프레임 B에 일치하는 행이 없더라도 결과에 포함됩니다.
위 내용은 Pandas에서 범위 기반 조인을 효율적으로 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!