Heim >Backend-Entwicklung >Python-Tutorial >Wie entferne ich effizient doppelte Zeilen basierend auf Indizes in Pandas?

Wie entferne ich effizient doppelte Zeilen basierend auf Indizes in Pandas?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-18 18:26:02973Durchsuche

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

Entfernen von Pandas-Zeilen mit doppelten Indizes

In Datenanalyseszenarien können doppelte Indizes auftreten, was eine effiziente Entfernung solcher Zeilen erforderlich macht . In diesem Artikel werden Lösungen für dieses Problem mithilfe der weit verbreiteten Pandas-Bibliothek untersucht.

Pandas' Ansatz zum Entfernen von Duplikaten

Pandas bietet verschiedene Methoden zum Entfernen doppelter Zeilen basierend auf dem Index Werte:

  • reset_index().drop_duplicates(subset='index').set_index('index'): Dieser Ansatz beinhaltet das Zurücksetzen des DataFrame-Index und die Identifizierung von Duplikaten mithilfe von drop_duplicates( ) und den ursprünglichen Index wieder als Index festlegen Spalte.
  • groupby().first(): Eine prägnantere Methode besteht darin, den DataFrame nach seinem Index zu gruppieren und das erste Vorkommen mithilfe der Funktion first() auszuwählen.
  • [~df3.index.duplicated(keep='first')]: Die duplizierte Methode arbeitet direkt mit dem Pandas-Index und ermöglicht so das Entfernen von Duplikaten unter Beibehaltung der ersten Instanz. Sie können keep='last' verwenden, um die letzte Instanz von Duplikaten beizubehalten.

Leistungsvergleich

Die zeitliche Komplexität jeder Methode variiert je nach Größe und Komplexität des DataFrame. Benchmarking dieser Methoden mit einem Beispiel-DataFrame:

  • drop_duplicates(subset='index'): Am wenigsten leistungsfähig aufgrund der zugrunde liegenden Sortieroperation.
  • groupby().first(): Etwas weniger performant als dupliziert().
  • [~df3.index.duplicated(keep='first')]: Am leistungsstärksten und lesbarsten.

Beispiel Demonstration

Um die Verwendung der duplizierten Methode zu veranschaulichen, betrachten Sie den Beispiel-DataFrame df3 mit doppeltem Index Werte:

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)

Das obige ist der detaillierte Inhalt vonWie entferne ich effizient doppelte Zeilen basierend auf Indizes in Pandas?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn