Python: Hoe rij en de volgende rij DataFrame.apply () methode passeren?

stemmen
0

Ik heb dataframe met duizenden rijen. De structuur is als volgt

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

Ik wil vergelijken met de A-kolom van de huidige rij en de volgende rij. Indien deze waarden gelijk Ik wil de waarde van B kolom die lager de waarde D kolom vergeleken rij die een grotere waarde heeft heeft voegen. Dan wil ik het verplaatste kolom waarde van kolom B. Het is als een swap proces te verwijderen.

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

Ik heb duizenden rijen en iLOC, loc, bij methoden traag werken. Tenminste ik wil gebruiken dataframe toe te passen methode. Ik probeerde een aantal voorbeelden van code, maar ze werkte niet.

Ik wil iets doen, zoals hieronder: DataFrame.apply (lambda rij: self.compare (rij, naast (rij)), as = 1))

Ik heb een vergelijking methode, maar ik kon de volgende rij niet doorgeven aan de te vergelijken methode. Hoe kan ik doorgeven aan de methode? Ook ik sta open voor een snellere panda's oplossingen te horen.

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


1 antwoorden

stemmen
0

Best niet om dat te doen met applyals het langzaam zal zijn; U kunt kijken naar het gebruik shift, bv

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

Krijgt een beetje ingewikkelder als je doet de verschuiving binnen groepen, maar nog steeds mogelijk.

antwoordde op 19/03/2020 om 22:03
bron van user

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