Python: Wie Zeile und nächste Zeile DataFrame.apply () -Methode übergeben?

stimmen
0

Ich habe Datenrahmen mit Tausenden Reihen. Seine Struktur ist als unten

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

Ich möchte die A-Säule der aktuellen Zeile und nächste Zeile vergleichen. Wenn diese Werte gleich sind Ich möchte den Wert der B-Säule zugesetzt werden, die den Wert auf der D-Säule im Vergleich Zeile hat eine geringere, die größer Wert hat. Es ist wie ein Swap-Prozess dann möchte ich die verschobene Spalte Wert der Spalte B entfernen.

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

Ich habe tausende Zeilen und ILoc, loc, bei Methoden langsam arbeiten. Wenigstens möchte ich Dataframe-Methode anwenden verwenden. Ich habe versucht, einige Code-Beispiele, aber sie funktionierte nicht.

Ich will etwas tun, wie folgt: DataFrame.apply (Lambda-Reihe: self.compare (Zeile, nächste (Reihe)), Achse = 1))

Ich habe einen Vergleich Methode, aber ich konnte nicht nächste Reihe zum Vergleichen Methode übergeben. Wie kann ich übergeben es an die Methode? Auch bin ich offen schneller Pandas Lösungen zu hören.

Veröffentlicht am 19/03/2020 um 21:58
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Am besten nicht zu tun , dass mit , applywie es langsam sein wird; Sie können mit Hilfe suchen shift, zB

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

Ruft ein wenig komplizierter, wenn Sie die Verschiebung innerhalb der Gruppen tun, aber immer noch möglich.

Beantwortet am 19/03/2020 um 22:03
quelle vom benutzer

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