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.

Python: Problemas de unión de dataframes

Con estos 2 dataframes:

df1 = pd.DataFrame(
{
“ID”: [“ID0”, “ID1”, “ID2”, “ID3”],
“A”: [“A0”, “A1”, “A2”, “A3”],
“B”: [“B0”, “B1”, “B2”, “B3”],
},
)

df2 = pd.DataFrame(
{
“ID”: [“ID0”, “ID1”, “ID2”, “ID4”],
“C”: [“C0”, “C1”, “C2”, “C4”],
“D”: [“D0”, “D1”, “D2”, “D4”],
},
)

Mi objetivo es unirlos, sin tener IDs repetidos y tener None donde no hay información:

ID A B C D
ID0 A0 B0 C0 D0
ID1 A1 B1 C1 D1
ID2 A2 B2 C2 D2
ID3 A3 B3 None None
ID4 None None C4 D4

¿Cuáles son los parámetros de .concat para hacer esto? He intentado varios sin obtener el resultado que quiero.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para unir los dos dataframes sin tener IDs repetidos y teniendo None cuando no hay información, podemos usar los siguientes parámetros para pd.concat():

    pd.concat([df1.set_index('ID'), df2.set_index('ID')], axis=1, join='outer').reset_index()
    

    Explicación de los parámetros:

    1. Primero establecemos el índice de cada dataframe como la columna ‘ID’ usando set_index(‘ID’).
    2. Luego usamos pd.concat() para concatenar los dos dataframes a lo largo del eje de las columnas (axis=1).
    3. Especificamos join=’outer’ para realizar una unión externa, que mantiene todas las filas de ambos dataframes y rellena los valores faltantes con None.
    4. Finalmente, restablecemos el índice usando reset_index() para hacer que ‘ID’ sea de nuevo una columna.

    Esto debería darnos el resultado deseado:

       ID    A    B    C    D
    0  ID0  A0   B0   C0   D0
    1  ID1  A1   B1   C1   D1
    2  ID2  A2   B2   C2   D2
    3  ID3  A3   B3   None None
    4  ID4  None None C4   D4
    

Comments are closed.