>백엔드 개발 >파이썬 튜토리얼 >두 Pandas DataFrame의 차이점을 어떻게 효율적으로 찾을 수 있나요?

두 Pandas DataFrame의 차이점을 어떻게 효율적으로 찾을 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-25 20:21:12588검색

How Can I Efficiently Find the Differences Between Two Pandas DataFrames?

두 데이터 프레임의 차이점 찾기

Pandas 데이터 프레임으로 작업할 때 두 데이터 프레임을 비교해야 하는 상황이 흔히 발생합니다. 그리고 그 사이의 차이점을 추출해 보세요. 예를 들어 기본 데이터 프레임(df1)과 하위 집합 데이터 프레임(df2)이 있고 df2에는 없는 df1의 모든 행과 열을 포함하는 새 데이터 프레임(df3)을 생성하려고 할 수 있습니다.

drop_duplicates 사용

이를 달성하는 가장 직접적인 방법은 drop_duplicates 함수. df1과 df2를 연결한 다음 연결된 데이터 프레임에 drop_duplicates를 적용하면 중복 행을 제거하고 고유한 행만 포함하는 데이터 프레임을 얻을 수 있습니다.

pd.concat([df1, df2]).drop_duplicates(keep=False)

중복 처리

그러나 df1 또는 df2 자체에 중복 행이 포함된 경우 drop_duplicates 접근 방식을 사용하면 잘못된 출력이 발생할 수 있습니다. 이 문제를 해결하려면 원본 복제본을 보존하는 대체 방법을 사용할 수 있습니다.

방법 1: 튜플과 함께 isin 사용

이 방법에는 데이터 프레임의 각 행을 튜플을 만들고 튜플이 두 데이터 프레임 모두에 존재하는지 확인합니다. 다른 데이터 프레임의 튜플과 일치하지 않는 행은 차이 데이터 프레임에 포함됩니다.

df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]

방법 2: 표시기와 병합

또 다른 접근 방식에는 표시기 열을 사용하여 df1과 df2를 병합하는 것이 포함됩니다. 병합에서 How='left'를 지정하면 df2에 해당 행이 없는 df1의 행에 left_only라는 _merge 열 값이 할당됩니다. 그런 다음 이 표시 열을 기반으로 행을 필터링하여 차이 데이터 프레임을 얻을 수 있습니다.

df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge'] != 'both']

위 내용은 두 Pandas DataFrame의 차이점을 어떻게 효율적으로 찾을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.