다른 데이터 프레임에서 제외된 한 데이터 프레임의 행 검색
Pandas에서는 잠재적으로 데이터가 겹칠 수 있는 여러 데이터 프레임이 있는 것이 일반적입니다. 자주 발생하는 작업 중 하나는 다른 데이터 프레임에 없는 한 데이터 프레임의 행을 격리하는 것입니다. 이 작업은 하위 집합으로 작업하거나 데이터를 필터링할 때 특히 유용합니다.
문제 공식화:
df1이 df2와 비교하여 행의 상위 집합을 포함하는 두 개의 Pandas 데이터 프레임이 있다고 가정하면, 우리는 df2에서 찾을 수 없는 df1의 행을 얻는 것을 목표로 합니다. 아래 예에서는 간단한 사례로 이 시나리오를 보여줍니다.
import pandas as pd df1 = pd.DataFrame(data={'col1': [1, 2, 3, 4, 5], 'col2': [10, 11, 12, 13, 14]}) df2 = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [10, 11, 12]}) print(df1) print(df2) # Expected result: # col1 col2 # 3 4 13 # 4 5 14
해결책:
이 문제를 효과적으로 해결하기 위해 Left Join이라는 기술을 사용합니다. 이 작업은 df1의 모든 행이 유지되도록 하면서 df1과 df2를 병합합니다. 또한 병합 후 각 행의 원본을 식별하는 표시기 열을 포함합니다. df2의 고유 행을 활용하고 중복 항목을 제외함으로써 원하는 결과를 얻을 수 있습니다.
아래 Python 코드는 이 솔루션을 구현합니다.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True) result = df_all[df_all['_merge'] == 'left_only']
설명:
일반적인 함정 방지:
일부 솔루션에서는 일치하는 대신 개별 열 값을 잘못 확인할 수 있다는 점에 유의하는 것이 중요합니다. 전체적으로 행. 이러한 접근 방식은 아래 예에 설명된 것처럼 잘못된 결과를 초래할 수 있습니다.
~df1.col1.isin(common.col1) & ~df1.col2.isin(common.col2)
이 코드는 행에서 값의 결합 발생을 고려하지 않으며 df1의 행에 개별적으로 나타나는 값이 있는 경우 잘못된 결과를 생성할 수 있습니다. df2에는 있지만 동일한 행에는 없습니다.
위에 설명된 왼쪽 조인 접근 방식을 채택하여 파생 행이 df1에 대한 배타적 행으로 올바르게 식별되도록 합니다. 이 기술은 한 데이터프레임에는 있지만 다른 데이터프레임에는 없는 행을 추출하는 안정적이고 효율적인 솔루션을 제공합니다.
위 내용은 한 Pandas DataFrame에서 다른 Pandas DataFrame에 없는 행을 효율적으로 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!