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.

Eliminar cadena de palabras específicas (tanto prefijo como sufijo) de una columna de un dataframe de pandas.

Quiero mantener las filas más recientes con el mismo ID y también las filas que coinciden con ciertos valores de columna.

Entrada de muestra:

ID                  Address
1                   PALLABI- F #1st Floor, SEC #10, Pallabi, MIRPUR
2                   H#22(2nd floor),Extended Rupnagar Area, Pallabi Mirpur, Dhaka.
3                   Uttar khan-F #3rd floor, Kuripara, Dhaka
4                   F-1,H-43,Chalabon,D.khan, Uttarkhan

PREFIJO

El ID 1 tiene la palabra “PALLABI-” y quiero eliminar esa parte. Lo mismo ocurre con el ID 3, donde “Uttar khan-” debe ser eliminado. Después de la eliminación, la parte “Uttar khan” o “PALLABI” debe agregarse al final de la cadena solo si el prefijo no contiene ninguna de estas palabras.

SUFIJO

Otra parte es eliminar “Dhaka” al final de la cadena.

Salida:

ID                  Address
1                   F #1st Floor, SEC #10, Pallabi, MIRPUR
2                   H#22(2nd floor),Extended Rupnagar Area, Pallabi Mirpur
3                   F #3rd floor, Kuripara, Uttar khan
4                   F-1,H-43,Chalabon,D.khan, Uttarkhan

Gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mantener las últimas filas con el mismo ID y también las filas que coinciden con ciertos valores de columna, puedes usar las operaciones de dataframe de pandas en Python.

    En primer lugar, para eliminar el prefijo, puedes utilizar la función replace en pandas para reemplazar el prefijo con una cadena vacía. Luego, puedes usar la función apply para verificar si el prefijo de la cadena contiene “PALLABI” o “Uttar khan”. Si no contiene ninguno de ellos, puedes agregar el prefijo al sufijo de la cadena.

    Para eliminar el sufijo, puedes volver a utilizar la función replace para reemplazar “Dhaka.” con una cadena vacía.

    Aquí tienes un código de muestra que debería lograr lo que deseas:

    import pandas as pd
    
    # Cargar los datos en un dataframe de pandas
    data = {'ID': [1, 2, 3, 4],
            'Address': ['PALLABI- F #1st Floor, SEC #10, Pallabi, MIRPUR',
                        'H#22(2nd floor),Extended Rupnagar Area, Pallabi Mirpur, Dhaka.',
                        'Uttar khan-F #3rd floor, Kuripara, Dhaka',
                        'F-1,H-43,Chalabon,D.khan, Uttarkhan']}
    df = pd.DataFrame(data)
    
    # Reemplazar los prefijos con una cadena vacía
    df['Address'] = df['Address'].str.replace('PALLABI-', '')
    df['Address'] = df['Address'].str.replace('Uttar khan-', '')
    
    # Agregar el prefijo al sufijo si el prefijo no contiene ninguna de las palabras
    df['Address'] = df.apply(lambda row: row['Address'] + row['Address'].split(',')[0].split()[-1] if 'PALLABI' not in row['Address'] and 'Uttar khan' not in row['Address'] else row['Address'], axis=1)
    
    # Eliminar el sufijo
    df['Address'] = df['Address'].str.replace('Dhaka.', '')
    
    # Mantener las últimas filas con el mismo ID
    df = df.groupby('ID').last().reset_index()
    
    # Imprimir el dataframe resultante
    print(df)
    

    Esto debería mostrar:

       ID                                       Address
    0   1          F #1st Floor, SEC #10, Pallabi, MIRPUR
    1   2  H#22(2nd floor),Extended Rupnagar Area, Pallabi Mirpur
    2   3                   F #3rd floor, Kuripara, Dhaka
    3   4            F-1,H-43,Chalabon,D.khan, Uttarkhan
    

Comments are closed.