Χρησιμοποιώντας .to_numpy () για να αντιγράψετε ειδικές στήλες από μια σειρά Πάντα Dataframe στο άλλο

ψήφοι
0

Έχω ένα Dataframe όπως αυτό:

     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

Και έχω ένα λεξικό της μητρικής: παιδί αντιστοιχίσεις για το UniqueID είναι:

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

Αυτό που πρέπει να κάνουμε είναι να βρόχο μέσω της Dataframe, και αντικαταστήστε το βάρος, όγκο και τιμές παραγωγικότητα του UniqueID σειράς «παιδί» με τις τιμές από τη «μητρική» UniqueID σειρά, όπου με αποτέλεσμα Dataframe θα μοιάζει κάπως έτσι:

     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

Έχω πειραματιστεί με διάφορες πιθανές λύσεις, και το πρόβλημα είμαι έχοντας είναι περιορίζοντας το αντίγραφο με τέτοιο τρόπο ώστε η οι τιμές CST της σειράς «παιδί» UniqueID και σώζονται, αλλά οι άλλες τιμές αντιγράφονται.

Το πιο κοντινό που έχω πάρει είναι ένας βρόχος μέσω του λεξικού, όπου κάθε ζευγάρωμα γίνεται τροφοδοτείται σε αυτό:

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

Αυτό φαίνεται να αντικαταστήσει όμορφα όλες τις τιμές από τη μια σειρά στην άλλη.

Οποιαδήποτε βοήθεια σχετικά με τις εξαιρέσεις ή μια καλύτερη λύση συνολικά θα ήταν εξαιρετικά χρήσιμη. Σας ευχαριστώ.

Δημοσιεύθηκε 19/03/2020 στις 22:01
πηγή χρήστη
Σε άλλες γλώσσες...                            

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