es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , , ,

Answer

  1. Avatar for 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ón apply con una función lambda que aplique el comando a las columnas deseadas. El código se vería así:

    # aplicar el comando a df1
    df1[['A', 'C', 'D']] = df1[['A', 'C', 'D']].apply(lambda x: x.diff().ne(0).astype(float))
    
    # aplicar el comando a df2
    df2[['A', 'C', 'D']] = df2[['A', 'C', 'D']].apply(lambda x: x.diff().ne(0).astype(float))
    

    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ámetro keep establecido en 'first'. El código se vería así:

    # mantener la primera aparición de duplicados en df1
    df1 = df1.drop_duplicates(subset=['A', 'B'], keep='first')
    
    # mantener la primera aparición de duplicados en df2
    df2 = df2.drop_duplicates(subset=['C', 'D'], keep='first')
    

    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.

Comments are closed.