web-dev-qa-db-ja.com

Pandas DataFrame内の重複したインデックスを削除する最速の方法

データフレーム内の重複したインデックスを削除したい場合、以下の方法は明らかな理由で機能しません。

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)

より効率的な方法はありますか?

25
RukTech

単に:DF.groupby(DF.index).first()

42
CT Zhu

'duplicated'メソッドは、データフレームとシリーズで機能します。インデックスが重複しているとマークされていない行を選択するだけです。

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

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]
5
behzad.nouri