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.

Procesamiento de Datos con Pandas

Tengo dos marcos de datos de la siguiente manera.

df1:

A B C D E F
1 2 3 x y z

df2:

A B C G H I
4 5 6 p q r

Quería hacer tres marcos de datos utilizando estos dos de la siguiente manera.

ndf1:

A B C ID
1 2 3 id_0
4 5 6 id_1

ndf2:

ID D E F
id_0 x y z

ndf3:

ID G H I
id_1 p q r
  • ndf1 contiene claves únicas de df1 y df2.
  • ndf2 contiene datos de df1.
  • ndf3 contiene datos de df2.

Mis preguntas son: ¿Es posible este flujo de trabajo con Python y Pandas? ¿Cuál sería el enfoque más adecuado para eso?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, este flujo de trabajo es posible con Python y Pandas. El mejor enfoque sería combinar los dos marcos de datos basándose en columnas comunes, luego crear una nueva columna para las claves únicas y dividir el marco de datos combinado resultante en los tres marcos de datos deseados utilizando la selección de columnas.

    Aquí hay un ejemplo de código para este enfoque:

    import pandas as pd
    
    # crear df1 y df2
    df1 = pd.DataFrame({'A': [1], 'B': [2], 'C': [3], 'D': ['x'], 'E': ['y'], 'F': ['z']})
    df2 = pd.DataFrame({'A': [4], 'B': [5], 'C': [6], 'G': ['p'], 'H': ['q'], 'I': ['r']})
    
    # combinar df1 y df2 en columnas comunes A, B y C
    combinado = pd.merge(df1, df2, on=['A', 'B', 'C'])
    
    # crear una nueva columna para IDs únicos
    combinado['ID'] = ['id_0', 'id_1']
    
    # dividir el marco de datos combinado en ndf1, ndf2 y ndf3 utilizando la selección de columnas
    ndf1 = combinado[['A', 'B', 'C', 'ID']]
    ndf2 = combinado[['ID', 'D', 'E', 'F']]
    ndf3 = combinado[['ID', 'G', 'H', 'I']]
    

    Los marcos de datos resultantes se verían así:

    ndf1:

    A B C ID
    0 1 2 3 id_0
    1 4 5 6 id_1

    ndf2:

    ID D E F
    0 id_0 x y z

    ndf3:

    ID G H I
    1 id_1 p q r

Comments are closed.