web-dev-qa-db-fra.com

Moyen le plus rapide pour supprimer un index dupliqué dans un Pandas DataFrame

Si je souhaite supprimer un index dupliqué dans une trame de données, les éléments suivants ne fonctionnent pas pour des raisons évidentes:

myDF.drop_duplicates(cols=index)

et

myDF.drop_duplicates(cols='index') 

recherche une colonne nommée 'index'

Si je veux supprimer un index, je dois faire:

myDF['index'] = myDF.index
myDF= myDF.drop_duplicates(cols='index')
myDF.set_index = myDF['index']
myDF= myDF.drop('index', axis =1)

Existe-t-il un moyen plus efficace?

25
RukTech

Simplement: DF.groupby(DF.index).first()

42
CT Zhu

La méthode "dupliquée" fonctionne pour les trames de données et pour les séries. Sélectionnez simplement sur les lignes qui ne sont pas marquées comme ayant un index en double:

df[~df.index.duplicated()]
25
danielstn

Vous pouvez utiliser numpy.unique pour obtenir l'index des valeurs uniques et utilisez iloc pour obtenir ces indices:

>>> df
        val
A  0.021372
B  1.229482
D -1.571025
D -0.110083
C  0.547076
B -0.824754
A -1.378705
B -0.234095
C -1.559653
B -0.531421

[10 rows x 1 columns]

>>> idx = np.unique(df.index, return_index=True)[1]
>>> df.iloc[idx]
        val
A  0.021372
B  1.229482
C  0.547076
D -1.571025

[4 rows x 1 columns]
5
behzad.nouri