Python: Hvordan passere rad og neste rad DataFrame.apply () metoden?

stemmer
0

Jeg har DataFrame med tusenvis rader. Dets struktur er som følger

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

Jeg ønsker å sammenligne En kolonne av gjeldende rad og neste rad. Hvis disse verdier er like jeg ønsker å legge til verdien av B-kolonne som har lavere verdi for D søyle av sammen rad som har høyere verdi. Så jeg ønsker å fjerne flyttet kolonneverdi i kolonne B. Det er som en swap prosess.

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

Jeg har tusenvis rader og iloc, loc ved metodene fungerer tregt. Minst Jeg vil bruke DataFrame søke metode. Jeg prøvde noen kodeeksempler, men de fungerte ikke.

Jeg ønsker å gjøre noe som nedenfor: DataFrame.apply (lambda rad: self.compare (rad, neste (rad)), aksen = 1))

Jeg har en sammenligne metode, men jeg kunne ikke passere neste rad til sammenligne metoden. Hvordan kan jeg gi det til metoden? Også er jeg åpen for å høre raskere pandaer løsninger.

Publisert på 19/03/2020 klokken 21:58
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Best å ikke gjøre det med applysom det vil være treg; du kan se på hjelp shift, for eksempel

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

Blir litt mer komplisert hvis du gjør skiftet i grupper, men fortsatt mulig.

Svarte 19/03/2020 kl. 22:03
kilden bruker

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