Utilizarea .to_numpy () pentru a copia anumite coloane dintr-un rând de Pandas Dataframe la altul

voturi
0

Am o Dataframe ca aceasta:

     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

Și am un dicționar de părinte: mapări copil pentru anii UNIQUEID:

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

Ceea ce trebuie să fac este bucla prin Dataframe, și înlocuiți greutate, volum, și valorile PRODUCTIVITATE ale „copilului“ rândul UNIQUEID cu valorile din rândul „mamă“ UNIQUEID, în cazul în care rezultă Dataframe ar arata astfel:

     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

Am experimentat cu mai multe soluții posibile, și probleme Întâmpin este limitarea copiei în așa fel încât valorile CST ale rândul „copilului denumit în continuare“ UNIQUEID și sunt păstrate, dar celelalte valori sunt copiate.

Cel mai aproape am ajuns este o buclă prin dicționarul în cazul în care fiecare pereche devine alimentat în acest:

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

Acest lucru pare să înlocuiască frumos toate valorile de la un rând la altul.

Orice ajutor cu privire la excepțiile sau o soluție mai bună de ansamblu ar fi extrem de util. Mulțumesc.

Întrebat 19/03/2020 la 22:01
sursa de către utilizator
În alte limbi...                            

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