Es muy usual que los registros de una base de datos aparezcan más de una vez, así que veamos cómo pandas puede ayudarnos a lidiar con estos casos. Para comenzar, importemos pandas y creemos un DataFrame con dos columnas y algunos datos repetidos.

import pandas as pd
df = pd.DataFrame({'a': ['w'] * 4 + ['x'] * 3 + ['y'] * 2 + ['z']+['v'], 'b': [1, 1, 1, 1, 2, 2, 2, 3, 3, 4,5]}) df
ab
0w1
1w1
2w1
3w1
4x2
5x2
6x2
7y3
8y3
9z4
10v5

Para encontrar los registros duplicados usamos duplicated , que marca con True aquellos casos de filas duplicadas:

df.duplicated()
0False
1True
2True
3True
4False
5True
6True
7False
8True
9False
10False

Podemos usar keep='first' para marcar solo la primera ocurrencia o keep='last' para marcar la última:

df.duplicated(keep='first')
0False
1True
2True
3True
4False
5True
6True
7False
8True
9False
10False
df.duplicated(keep='last')
0True
1True
2True
3False
4True
5True
6False
7True
8False
9False
10False

Identificados los casos duplicados, podemos usar este resultado para filtrar y seleccionar aquellos que no tienen un registro duplicado:

df[~ df.duplicated()]
ab
0w1
4x2
7y3
9z4
10v5

Si quisieras dejar el primer registro de los duplicados o el último, recuerda usar keep='first' o keep='last'. Remarco el hecho de que usé negación '~' para ver los registros no duplicados.

Y si me interesara ver cuáles son los registros duplicados, podemos usar keep=False:

df.duplicated(keep=False)
0
0True
1True
2True
3True
4True
5True
6True
7True
8True
9False
10False
df[df.duplicated(keep=False)]
ab
0w1
1w1
2w1
3w1
4x2
5x2
6x2
7y3
8y3

Por último, puedes usar el comando 'drop_duplicates' para eliminar los duplicados. Por defecto, la función guarda el primer resultado keep='first':

df.drop_duplicates()
ab
0w1
4x2
7y3
9z4
10v5

Y si quieres solo borrar duplicados teniendo en cuenta una sola columna, lo puedes hacer mediante una lista nombrando las columnas donde vas a eliminar los duplicados, en este caso, ['a']:

df.drop_duplicates(['a'],keep='last')
ab
3w1
6x2
8y3
9z4
10v5

Cómo lidiar con datos duplicados en Pandas