행이 교차하는 두 개의 Pandas 데이터 프레임(df1 및 df2)이 주어지면 작업은 df1에 없는 행 df2.
이 문제를 해결하려면 df1에서 df2로 left-join을 수행하여 df2에서 중복을 제거하여 df1의 각 행이 단 하나의 행으로 조인되도록 할 수 있습니다. df2.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
이 왼쪽 조인은 각 원본을 나타내는 추가 열 _merge를 생성합니다. row.
df1에만 해당하는 행을 필터링하기 위해 부울 조건을 적용합니다.
df_filtered = df_all[df_all['_merge'] == 'left_only']
일부 솔루션은 각 열의 각 값을 독립적으로 확인하는 데 오류가 있습니다. 행 단위의 존재를 고려하는 대신. 예를 들어 다음 솔루션은
(~df1.col1.isin(common.col1)) & (~df1.col2.isin(common.col2))
공통적으로 없는 [3, 10] 값이 있는 행을 캡처하지 못하기 때문에 잘못된 결과를 반환합니다.
0 False 1 False 2 False 3 True 4 True 5 False dtype: bool
위 내용은 한 Pandas DataFrame에는 있지만 다른 DataFrame에는 없는 행을 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!