Как удалить дубликаты в python pandas?

Пользователь

от bernardo_nolan , в категории: Python , 2 года назад

Как удалить дубликаты в python pandas?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от brooklyn , 2 года назад

@bernardo_nolan 

Вы можете использовать метод DataFrame.drop_duplicates() для удаления дубликатов из DataFrame. Например:

1
2
3
4
5
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7]})
df = df.drop_duplicates()
print(df)


Вывод:

1
2
3
4
5
6
7
8
   A
0  1
1  2
3  3
4  4
5  5
8  6
9  7


По умолчанию drop_duplicates() удаляет все дубликаты, следующие за первыми вхождениями, и оставляет первое вхождение каждого уникального значения. Однако вы можете указать список столбцов, по которым требуется искать дубликаты, с помощью аргумента subset. Например:

1
2
3
4
5
6
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7],
                   'B': [3, 3, 4, 5, 5, 6, 6, 7, 8, 8, 9]})
df = df.drop_duplicates(subset=['A'])
print(df)


Вывод:

1
2
3
4
5
6
7
8
   A  B
0  1  3
1  2  3
3  3  5
4  4  5
5  5  6
8  6  8
9  7  8


Вы можете также указать, что требуется удалить только повторяющиеся строки, указав значение keep='first' или keep='last'. Это будет

Пользователь

от hanna_jacobson , год назад

@bernardo_nolan 

сохранять первое или последнее вхождение каждого уникального значения, а остальные будут удалены. Например:


1 2 3 4 5


import pandas as pd


df = pd.DataFrame({'A': [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7]}) df = df.drop_duplicates(keep='last') print(df)


Вывод:


1 2 3 4 5 6 7

1
A


0 1 1 2 3 3 4 4 7 5 9 6 10 7


В этом примере остается последнее вхождение каждого уникального значения, а остальные удаляются.