Utilizzando .to_numpy () per copiare specifiche colonne da una fila di Pandas dataframe all'altro

voti
0

Ho un dataframe come questo:

     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

E ho un dizionario di genitore: mappature figlio per l'UniqueID del:

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

Quello che devo fare è scorrere l'dataframe, e sostituire il peso, volume e valori produttività della 'bambino' fila UniqueID con i valori della UniqueID fila 'genitore', dove risulta dataframe sarebbe simile a questa:

     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

Ho sperimentato diverse soluzioni possibili, e il problema che sto avendo è che limita la copia in modo tale che l'una i valori CST della riga 'bambino' UniqueID e si conservano, ma gli altri valori vengono copiati sopra.

Il più vicino che ho ottenuto è un ciclo attraverso il dizionario in cui ogni accoppiamento viene immessa in questo modo:

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

Questo sembra sostituire ben tutti i valori da una fila all'altra.

Qualsiasi aiuto sulle eccezioni o una soluzione complessivamente migliore sarebbe estremamente utile. Grazie.

È pubblicato 19/03/2020 alle 22:01
fonte dall'utente
In altre lingue...                            

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