Utilisation de .to_numpy () pour copier des colonnes spécifiques d'une rangée de trame de données à un autre Pandas

voix
0

J'ai un dataframe comme ceci:

     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

Et j'ai un dictionnaire de parent: les correspondances de l'enfant pour ce uniqueID:

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

Ce que je dois faire est de boucle à travers la trame de données, et remplacer le poids, le volume et les valeurs de la ligne PRODUCTIVITÉ « enfant » UniqueID avec les valeurs de la « parent » ligne UniqueID, où résultant dataframe ressemblerait à ceci:

     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

Je l'ai expérimenté avec plusieurs solutions possibles, et la peine que je vais avoir est de limiter la copie dans une telle manière que la UniqueID et les valeurs CST de la ligne « l'enfant » sont conservés, mais les autres valeurs sont copiées.

Le plus proche que j'ai obtenu est une boucle à travers le dictionnaire où chaque paire s'introduit dans celle-ci:

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

Cela semble remplacer bien toutes les valeurs d'une rangée à l'autre.

Toute aide sur les exceptions ou une meilleure solution serait globale extrêmement utile. Je vous remercie.

Créé 19/03/2020 à 22:01
source utilisateur
Dans d'autres langues...                            

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