Pandas의 인덱스를 기반으로 중복 행을 효율적으로 제거하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-18 18:26:02
원래의
867명이 탐색했습니다.

How to Efficiently Remove Duplicate Rows Based on Indices in Pandas?

중복 색인이 있는 Pandas 행 제거

데이터 분석 시나리오에서 중복 색인이 발생할 수 있으므로 해당 행을 효율적으로 제거해야 합니다. . 이 기사에서는 널리 사용되는 Pandas 라이브러리를 사용하여 이 문제에 대한 솔루션을 탐색합니다.

Pandas의 중복 제거 접근 방식

Pandas는 인덱스를 기반으로 중복 행을 제거하는 여러 가지 방법을 제공합니다. 값:

  • reset_index().drop_duplicates(subset='index').set_index('index'): 이 접근 방식에는 DataFrame 인덱스를 재설정하고 drop_duplicates( ), 원래 인덱스를 다시 인덱스로 설정 column.
  • groupby().first(): 더 간결한 방법은 DataFrame을 인덱스별로 그룹화하고 first() 함수를 사용하여 첫 번째 항목을 선택하는 것입니다.
  • [~df3.index.duplicated(keep='first')]: 복제된 메소드는 Pandas Index를 사용하면 첫 번째 인스턴스를 보존하면서 중복 항목을 제거할 수 있습니다. keep='last'를 사용하면 마지막 중복 인스턴스를 유지할 수 있습니다.

성능 비교

각 방법의 시간 복잡도는 크기에 따라 다릅니다. DataFrame의 복잡성. 샘플 DataFrame을 사용하여 이러한 메서드 벤치마킹:

  • drop_duplicates(subset='index'): 기본 정렬 작업으로 인해 성능이 가장 낮습니다.
  • groupby().first(): groupby().first()
  • : 다음보다 성능이 약간 떨어집니다. Duplicated().
  • [~df3.index.duplicated(keep='first')]
  • : 가장 성능이 뛰어나고 읽기 쉽습니다.

샘플 데모

중복 방법의 사용을 설명하려면 다음을 고려하십시오. 중복된 인덱스 값이 있는 샘플 DataFrame df3:
import pandas as pd
import datetime

# Example DataFrame with duplicate indices
startdate = datetime.datetime(2001, 1, 1, 0, 0)
enddate = datetime.datetime(2001, 1, 1, 5, 0)
index = pd.date_range(start=startdate, end=enddate, freq='H')
data1 = {'A' : range(6), 'B' : range(6)}
data2 = {'A' : [20, -30, 40], 'B' : [-50, 60, -70]}
df1 = pd.DataFrame(data=data1, index=index)
df2 = pd.DataFrame(data=data2, index=index[:3])
df3 = df2.append(df1)

print(df3)

# Remove duplicate rows with duplicate indices
df3 = df3[~df3.index.duplicated(keep='first')]

print(df3)
로그인 후 복사

위 내용은 Pandas의 인덱스를 기반으로 중복 행을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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