Учитывайте дублирующийся индекс в методе drop_duplicates панды DataFrame - PullRequest
0 голосов
/ 30 августа 2018

Метод drop_duplicates в DataFrame Pandas учитывает все столбцы (по умолчанию) или подмножество столбцов (необязательно) при удалении дублирующихся строк и не может учитывать дублирующийся индекс.

Я ищу чистое однострочное решение, которое учитывает индекс и подмножество или все столбцы при определении повторяющихся строк. Например, рассмотрим DataFrame

df = pd.DataFrame(index=['a', 'b', 'b', 'c'], data={'A': [0, 0, 0, 0], 'B': [1, 0, 0, 0]})
   A  B
a  0  1
b  0  0
b  0  0
c  0  0

Использование по умолчанию метода drop_duplicates дает

df.drop_duplicates()
   A  B
a  0  1
b  0  0

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

df.drop_duplicates(consider_index=True) # not a supported keyword argument
   A  B
a  0  1
b  0  0
c  0  0

Существует ли один метод, обеспечивающий эту функциональность, который лучше моего нынешнего подхода:

df['index'] = df.index
df.drop_duplicates(inplace=True)
del df['index']

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Попробуйте это:

df.reset_index().drop_duplicates().set_index('[name_of_your_index_here]')

[выход]

       A  B
index      
a      0  1
b      0  0
c      0  0
0 голосов
/ 30 августа 2018

Позвоните reset_index и duplicated, а затем проиндексируйте оригинал:

df = df[~df.reset_index().duplicated().values]
print (df)
   A  B
a  0  1
b  0  0
c  0  0
...