Gebruik .to_numpy () om specifieke kolommen uit één rij Panda dataframe kopiëren naar een andere

stemmen
0

Ik heb een dataframe als volgt uit:

     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

En ik heb een woordenboek van de ouder: kind mappings voor de UniqueID's:

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

Wat ik moet doen is lus door het dataframe en vervang het gewicht, volume, en de productiviteit waarden van het 'kind' UniqueID rij met de waarden uit de 'ouder' UniqueID rij, wanneer dit het resultaat dataframe zou er als volgt uit:

     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

Ik heb geëxperimenteerd met verschillende mogelijke oplossingen, en de moeite die ik heb is de kopie op een zodanige wijze dat de UniqueID en de CST waarden van de rij 'kind' zijn gebleven en daarom beperkte, maar de andere waarden worden gekopieerd.

De dichtstbijzijnde ik heb gekregen is een lus door het woordenboek waar elke koppeling wordt gevoed in deze:

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

Dit lijkt om alle waarden netjes vervangen van de ene rij naar de andere.

Alle hulp op de uitzonderingen of een betere oplossing algemeen zou zeer nuttig zijn. Dank je.

De vraag is gesteld op 19/03/2020 om 22:01
bron van user
In andere talen...                            

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