Cómo aplicar un comando a varios elementos de columna?
Tengo la siguiente tabla y me gustaría aplicar un comando para comparar y eliminar valores duplicados en la fila n
y n + 1
en varios dataframes (df1, df2)
.
Sugerencia de comando: .diff().ne(0)
¿Cómo aplicar este comando solo a los elementos de las columnas A, C y D, utilizando los comandos def
, lambda
o apply
?
df1:
A | B |
---|---|
22 | 33 |
22 | 4 |
3 | 55 |
1 | 55 | |
df2:
C | D |
---|---|
5 | 2.3 |
45 | 33 |
7 | 33 |
7 | 11| |
La salida esperada es:
df1:
A | B |
---|---|
22 | 33 |
NaN | 4 |
3 | 55 |
1 | 55 | |
df2:
C | D |
---|---|
5 | 2.3 |
45 | 33 |
7 | NaN |
NaN | 11| |
La otra opción deseada sería eliminar las líneas duplicadas, manteniendo el primer número.
df1:
A | B | |
---|---|---|
22 | 33 | |
fila eliminada | fila eliminada | |
3 | 55 | |
fila eliminada | fila eliminada |
df2:
C | D |
---|---|
5 | 2.3 |
45 | 33 |
fila eliminada | fila eliminada |
fila eliminada | fila eliminada |
davy.ai
Para aplicar el comando
.diff().ne(0)
solo a los elementos de las columnas A, C y D en ambos dataframes, podemos utilizar la funciónapply
con una función lambda que aplique el comando a las columnas deseadas. El código se vería así:Este código aplica la función lambda solo a las columnas A, C y D, y reemplaza los valores originales con 0 para los valores no duplicados y 1 para los valores duplicados.
Para mantener la primera aparición de cada fila duplicada y eliminar el resto, podemos utilizar la función
drop_duplicates
con el parámetrokeep
establecido en'first'
. El código se vería así:Este código elimina todas las filas duplicadas excepto la primera aparición en las columnas especificadas. El parámetro
subset
especifica qué columnas comparar para encontrar duplicados.