DataFrame2에 없는 DataFrame1의 고유 행을 어떻게 효율적으로 찾을 수 있습니까?

Susan Sarandon
풀어 주다: 2024-11-21 07:28:10
원래의
617명이 탐색했습니다.

How Can I Efficiently Find the Unique Rows in DataFrame1 That Are Not in DataFrame2?

두 DataFrame의 차이점 찾기

데이터 분석에서는 데이터세트 간의 불일치를 식별하는 것이 중요합니다. df1과 df2라는 두 개의 데이터 프레임이 있다고 가정합니다. 여기서 df2는 df1의 하위 집합입니다. df1에는 있지만 df2에는 없는 고유한 행과 열을 효율적으로 검색하려면 차이 집합 개념을 활용할 수 있습니다.

접근 방식: pd.concat 및 drop_duplicates**

기본 접근 방식은 pd.concat을 사용하여 두 데이터프레임을 결합한 후 중복 행을 제거하거나 drop_duplicates를 사용하는 열. keep=False를 설정하면 df1에만 존재하는 행이나 열만 유지됩니다.

df3 = pd.concat([df1, df2]).drop_duplicates(keep=False)
로그인 후 복사

주의 사항: 중복 항목 처리

그러나 이는 메서드는 두 데이터프레임 자체에 중복 값이 ​​포함되어 있지 않다고 가정합니다. 그렇게 하면 결과가 부정확할 수 있습니다. 이 문제를 해결하기 위해 다음과 같은 대체 접근 방식을 사용할 수 있습니다.

방법 1: Tuple과 함께 isin 사용

이 방법에는 각 행을 다음으로 변환하는 작업이 포함됩니다. df.apply(tuple, 1)을 사용하여 튜플을 만든 다음 다음을 사용하여 튜플이 df2에 있는지 확인합니다. df.apply(튜플, 1).isin(df2.apply(튜플, 1)). 결과 데이터 프레임에는 df2에 없는 df1의 고유한 행이 포함됩니다.

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
로그인 후 복사

방법 2: 표시기와 병합

또 다른 접근 방식은 df1을 다음과 병합하는 것입니다. df1에만 존재하는 행을 식별하는 표시기와 함께 pd.merge를 사용하는 df2. 람다 함수를 사용하면 '_merge' 열이 'both'와 같지 않은 행을 필터링할 수 있습니다.

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge']!='both']
로그인 후 복사

결론

이를 활용하여 기술을 사용하면 두 데이터프레임 간의 차이점을 효과적으로 찾고 각 데이터프레임에 존재하는 고유한 데이터 포인트에 대한 통찰력을 얻을 수 있습니다.

위 내용은 DataFrame2에 없는 DataFrame1의 고유 행을 어떻게 효율적으로 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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