Самый быстрый способ удалить Дублированный индекс в фрейме данных Pandas [duplicate]

этот вопрос уже есть ответ здесь:

Если я хочу удалить дублированный индекс в фрейме данных, следующее не работает по очевидным причинам:

myDF.drop_duplicates(cols=index)

и

myDF.drop_duplicates(cols='index') 

ищет столбец с именем 'index'

Если я хочу сбросить индекс, я должен сделать:

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

есть ли более эффективный способ?

3 ответов


просто: DF.groupby(DF.index).first()


метод 'duplicated' работает для фреймов данных и для рядов. Просто выберите те строки, которые не помечены как имеющие дубликат индекса:

df[~df.index.duplicated()]

можно использовать numpy.unique чтобы получить индекс уникальных значений и использовать iloc чтобы получить эти показатели:

>>> 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]