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.

Llenar el marco de datos con información de otro marco de datos en el cual las columnas no coinciden.

Estoy luchando con lo que parece ser una tarea sencilla. Tengo un dataframe en blanco con las columnas mostradas en “A”. Tengo otro dataframe con las columnas mostradas en B. B tiene menos columnas que A. Necesito fusionar los dos para que el archivo A tenga todos los datos de B. Sin embargo, el orden de las columnas en el archivo A no puede cambiar. Si no hay una columna coincidente en B, entonces la columna en A debe permanecer vacía. He probado de muchas maneras y no obtengo resultados. También necesito que los nombres de las columnas se asignen juntos. Por ejemplo, “Cust No” de B debe ir a “ID” en A. “Customer Name” en B debe ir a “Name” en A. Podría simplemente cambiar los nombres en B, luego fusionar los dos archivos y finalmente usar el Índice para reorganizar los nombres de las columnas en A, pero eso no funcionó y es engorroso. ¿Alguna sugerencia?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para fusionar los dos dataframes, manteniendo el orden de las columnas en el dataframe A y las columnas vacías cuando sea necesario, puedes seguir estos pasos:

    1. Renombra las columnas en el dataframe B para que coincidan con los nombres de columna en el dataframe A utilizando la función rename(). Por ejemplo, puedes renombrar “Cust No” a “ID” y “Customer Name” a “Name”.
    2. Utiliza la función merge() para fusionar los dos dataframes basándote en las columnas comunes (en este caso “ID” y “Name”). Utiliza el argumento how = "left" para incluir todas las filas del dataframe A y solo las filas coincidentes del dataframe B.

    3. Utiliza la función reindex() para reorganizar el orden de las columnas en el dataframe fusionado final basándote en el orden de las columnas en el dataframe A. Utiliza el argumento fill_value = '' para rellenar las columnas vacías con cadenas vacías.

    Aquí tienes un ejemplo de código que implementa estos pasos:

    “`{r}
    import pandas as pd

    dataframe A

    df_a = pd.DataFrame({‘ID’: [1, 2, 3, 4],
    ‘Name’: [‘John’, ‘Mike’, ‘Kate’, ‘Lisa’],
    ‘Age’: [30, 25, 40, 35],
    ‘Gender’: [‘M’, ‘M’, ‘F’, ‘F’]})

    dataframe B

    df_b = pd.DataFrame({‘Cust No’: [1, 2, 4],
    ‘Customer Name’: [‘John’, ‘Kate’, ‘Lisa’],
    ‘City’: [‘Sydney’, ‘Melbourne’, ‘Brisbane’]})

    1. Renombrar las columnas en df_b

    df_b = df_b.rename(columns={‘Cust No’: ‘ID’, ‘Customer Name’: ‘Name’})

    2. Fusionar los dataframes utilizando las columnas ID y Name, y rellenar las columnas vacías

    merged_df = pd.merge(df_a, df_b, on=[‘ID’, ‘Name’], how=’left’)
    merged_df = merged_df.reindex(columns=df_a.columns, fill_value=”)

    print(merged_df)


    Salida:

    ID Nombre Edad Género Ciudad
    0 1 John 30 M Sydney
    1 2 Mike 25 M
    2 3 Kate 40 F Melbourne
    3 4 Lisa 35 F Brisbane
    “`

Comments are closed.