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.

Reemplazar los valores de una columna de un dataframe en Python con la concatenación de una columna adicional.

Tengo una salida df generada a partir de múltiples columnas (ejemplo a continuación):

 col_a     col_b     col_c

0 101 104 AAB
1 337 103 CAD
2 524 204 DER
3 129 404 EEH
4 842 108 HHR
5 337 108 HHE

¿Hay alguna manera en Python de reemplazar los valores de col_a de manera que si alguno de los valores es 101, 337 o 524, los valores de col_a se concatenen con los valores correspondientes de col_b y col_c?

Entonces:

101 sería reemplazado con 101-104-AAB,
337 se convertiría en 337-103-CAD (línea 1) y 337-108-HHE (línea 5), y
524 se convertiría en 524-204-DER?

¡Gracias de antemano por tus ideas!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de reemplazar los valores de col_a usando Python.

    Puedes utilizar la indexación para reemplazar valores específicos en col_a y la concatenación para combinar los valores de col_a, col_b y col_c.

    Aquí tienes un código de ejemplo para lograr esto:

    # Verificar los valores a reemplazar y concatenar
    for i, row in df.iterrows():
        if row['col_a'] in [101, 337, 524]:
            df.at[i, 'col_a'] = str(row['col_a']) + '-' + str(row['col_b']) + '-' + row['col_c']
    

    Este código recorre cada fila del dataframe (utilizando iterrows()), verifica si el valor en col_a es uno de los tres valores a reemplazar y, de ser así, concatena los valores de col_a, col_b y col_c utilizando el operador + y establece el nuevo valor en col_a utilizando .at[i, 'col_a'].

    Esto debería darte la salida deseada:

         col_a               col_b     col_c
    0     101-104-AAB        104       AAB
    1     337-103-CAD        103       CAD
    2     524-204-DER        204       DER
    3     129                 404       EEH
    4     842                 108       HHR
    5     337-108-HHE        108       HHE
    

    ¡Espero que esto te sea útil!

Comments are closed.