Usando .to_numpy () para copiar columnas específicas de una fila de pandas trama de datos a otro

votos
0

Tengo una trama de datos de esta manera:

     UniqueID  CST  WEIGHT  VOLUME  PRODUCTIVITY
0  413-20012    3     123      12          1113
1  413-45365    1     889      75          6748
2  413-21165    8     554      13          4536
3  413-24354    1     387      35          7649
4  413-34658    2     121      88          2468
5  413-36889    4     105      76          3336
6  413-23457    5     355      42          7894
7  413-30089    5     146      10          9112
8  413-41158    5     453      91          4545
9  413-51015    9     654      66          2232

Y tengo un diccionario de los padres: asignaciones hijo para el UniqueID de:

parent_child_dict = {
    '413-51015': '413-41158',
    '413-21165': '413-23457',
    '413-45365': '413-41158',
    '413-20012': '413-23457'
}

Lo que tengo que hacer es recorrer la trama de datos, y vuelva a colocar el peso, el volumen y los valores de productividad del 'niño' fila UniqueID con los valores de la 'padre' UniqueID fila, cuando éste se obtenga trama de datos se vería así:

     UniqueID  CST  WEIGHT  VOLUME  PRODUCTIVITY
0  413-20012    3     355      42          7894
1  413-45365    1     453      91          4545
2  413-21165    8     355      42          7894
3  413-24354    1     387      35          7649
4  413-34658    2     121      88          2468
5  413-36889    4     105      76          3336
6  413-23457    5     355      42          7894
7  413-30089    5     146      10          9112
8  413-41158    5     453      91          4545
9  413-51015    9     453      91          4545

He experimentado con varias soluciones posibles, y el problema que estoy teniendo es limitar la copia de tal manera que la CST los valores de la fila 'niño' UniqueID y se conservan, pero los otros valores se copian.

Lo más cerca que he recibido es un bucle a través del diccionario donde cada emparejamiento se alimenta en esto:

df.loc[df['UniqueID'] == '413-51015'] = df.loc[df['UniqueID'] == '413-41158'].to_numpy()

Esto parece muy bien para reemplazar todos los valores de una fila a otra.

Cualquier ayuda en las excepciones o una mejor solución global serían extremadamente útiles. Gracias.

Publicado el 19/03/2020 a las 22:01
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more