Solución:
Esto es mucho más fácil en pandas ahora con drop_duplicates y el parámetro keep.
import pandas as pd
df = pd.DataFrame({"A":["foo", "foo", "foo", "bar"], "B":[0,1,1,1], "C":["A","A","B","A"]})
df.drop_duplicates(subset=['A', 'C'], keep=False)
Solo quiero agregar a la respuesta de Ben sobre drop_duplicates:
keep
: {‘primero’, ‘último’, falso}, predeterminado ‘primero’
-
primero: elimine los duplicados excepto la primera aparición.
-
último: Elimina los duplicados excepto la última aparición.
-
Falso: elimine todos los duplicados.
Así que estableciendo keep
a Falso le dará la respuesta deseada.
DataFrame.drop_duplicates (* args, ** kwargs) Devuelve DataFrame con filas duplicadas eliminadas, opcionalmente solo considerando ciertas columnas
Parámetros: subconjunto: etiqueta de columna o secuencia de etiquetas, opcional Considere solo ciertas columnas para identificar duplicados, de forma predeterminada, utilice todas las columnas. por primera vez. último: Elimina los duplicados excepto la última aparición. Falso: elimine todos los duplicados. take_last: obsoleto inplace: boolean, default False Ya sea para colocar duplicados en su lugar o devolver una copia cols: kwargs único argumento del subconjunto [deprecated] Devoluciones: deduplicado: DataFrame
Si desea que el resultado se almacene en otro conjunto de datos:
df.drop_duplicates(keep=False)
o
df.drop_duplicates(keep=False, inplace=False)
Si es necesario actualizar el mismo conjunto de datos:
df.drop_duplicates(keep=False, inplace=True)
Los ejemplos anteriores eliminarán todos los duplicados y mantendrán uno, similar a DISTINCT *
en SQL