Я знаком с тем, как отбрасывать дублирующиеся строки, а затем использовать параметр first
, last
, none
.Ничего сложного в этом нет, и есть множество примеров (например, здесь ).
Однако, я ищу способ найти дубликаты, но вместо удаления всех дубликатови сохраняя первое, если у меня есть дубликаты, оставьте все дубликаты, но отбросьте первое:
Так что вместо «отбросить дубликаты, оставьте первое», я хочу «сохранить, если дубликаты, сначала убрать»
Пример:
Учитывая этот кадр данных и просматривая дубликаты в столбце cost
:
ID name type cost
0 0 a bb 1
1 1 a cc 2 <--- there are duplicates, so drop this row
2 1_0 a dd 2
3 2 a ee 3 <--- there are duplicates, so drop this row
4 2_0 a ff 3
5 2_1 a gg 3
6 2_2 a hh 3
Если в столбце cost
есть дубликаты, просто отбросьте первое вхождение, но оставьте все остальное.
Таким образом, мой вывод будет:
ID name type cost
0 0 a bb 1
2 1_0 a dd 2
4 2_0 a ff 3
5 2_1 a gg 3
6 2_2 a hh 3
Вот пример кадра данных:
import pandas as pd
df = pd.DataFrame([
['0', 'a', 'bb', '1'],
['1', 'a', 'cc', '2'],
['1_0', 'a', 'dd', '2'],
['2', 'a', 'ee', '3'],
['2_0', 'a', 'ff', '3'],
['2_1', 'a', 'gg', '3'],
['2_2', 'a', 'hh', '3']], columns = ['ID', 'name', 'type', 'cost'])