Maison  >  Article  >  développement back-end  >  Comment supprimer efficacement les lignes en double basées sur des indices dans Pandas ?

Comment supprimer efficacement les lignes en double basées sur des indices dans Pandas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-18 18:26:02870parcourir

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

Suppression des lignes Pandas avec des index en double

Dans les scénarios d'analyse de données, des index en double peuvent survenir, ce qui nécessite une suppression efficace de ces lignes . Cet article explore les solutions à ce problème à l'aide de la bibliothèque Pandas, largement utilisée.

Approche de Pandas en matière de suppression des doublons

Pandas propose plusieurs méthodes pour supprimer les lignes en double en fonction des valeurs d'index. :

  • reset_index().drop_duplicates(subset='index').set_index('index') : Cette approche implique de réinitialiser l'index DataFrame, en identifiant les doublons à l'aide de drop_duplicates() , et en redéfinissant l'index d'origine comme colonne d'index.
  • groupby().first() : Une méthode plus concise consiste à regrouper le DataFrame par son index et à sélectionner la première occurrence à l'aide du fonction first().
  • [~df3.index.duplicate(keep='first')] : La méthode dupliquée opère directement sur l'index Pandas, permettant la suppression des doublons tout en préservant la première instance. Vous pouvez utiliser keep='last' pour conserver la dernière instance des doublons.

Comparaison des performances

La complexité temporelle de chaque méthode varie en fonction de la taille et la complexité du DataFrame. Analyse comparative de ces méthodes à l'aide d'un exemple de DataFrame :

  • drop_duplicates(subset='index'): Moins performant en raison de son opération de tri sous-jacente.
  • groupby().first() : Légèrement moins performant que duplicated().
  • [~df3.index.duplicate(keep='first')] : Le plus performant et lisible.

Exemple de démonstration

Pour illustrer l'utilisation de la méthode dupliquée, considérons l'exemple DataFrame df3 avec des valeurs d'index en double :

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)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn