Python: Πώς να περάσει γραμμή και DataFrame.apply () μέθοδος επόμενη σειρά;

ψήφοι
0

Έχω DataFrame με χιλιάδες σειρές. Η δομή του είναι όπως παρακάτω

     A    B    C     D 
 0   q   20    'f'
 1   q   14    'd'
 2   o   20    'a'

Θέλω να συγκριθεί η στήλη Α της τρέχουσας σειράς και την επόμενη σειρά. Εάν αυτές οι τιμές είναι ίσες θέλω να προσθέσω την αξία της στήλης Β που έχει μειώσει την τιμή στη στήλη Δ του σε σύγκριση σειρά που έχει μεγαλύτερη αξία. Στη συνέχεια, θέλω να αφαιρέσω το μετακόμισε τιμή της στήλης της στήλης Β Είναι σαν μια διαδικασία ανταλλαγής.

    A    B    C     D 
0   q   20    'f'   14
1   o   20    'a'

Έχω χιλιάδες σειρές και ILOC, όπ.π., σε μεθόδους εργάζονται αργά. Τουλάχιστον θέλω να χρησιμοποιήσω DataFrame μέθοδος εφαρμόζεται. Δοκίμασα μερικά δείγματα κώδικα, αλλά δεν λειτούργησε.

Θέλω να κάνω κάτι, όπως παρακάτω: DataFrame.apply (σειρά λάμδα: self.compare (σειρά, το επόμενο (σειρά)), άξονας = 1))

Έχω μια σύγκριση μέθοδο, αλλά εγώ δεν θα μπορούσε να περάσει επόμενη σειρά στον συγκρίνετε μέθοδο. Πώς μπορώ να περάσει με τη μέθοδο; Επίσης Είμαι ανοιχτός να ακούσω πιο γρήγορα pandas λύσεις.

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


1 απαντήσεις

ψήφοι
0

Καλύτερα να μην το κάνουμε αυτό με applyόσο θα είναι αργά? μπορείτε να δείτε τη χρήση shift, π.χ.

df['A_shift'] = df['A'].shift(1)
df['Is_Same'] = 0
df.loc[df.A_shift == df.A, 'Is_Same'] = 1

Γίνεται λίγο πιο περίπλοκη, αν κάνετε τη μετατόπιση μέσα στις ομάδες, αλλά ακόμα δυνατή.

Απαντήθηκε 19/03/2020 στις 22:03
πηγή χρήστη

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