Python: Cum să treci rând și DataFrame.apply metoda următoare rând ()?

voturi
0

Am DataFrame cu mii de rânduri. Structura sa este la fel de mai jos

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

Vreau să compare coloana A din rândul curent și rândul următor. Dacă aceste valori sunt egale vreau să adăugați valoarea coloanei B, care are valoarea mai mici pentru coloana D din rândul comparativ care are o valoare mai mare. Apoi vreau să eliminați valoarea din coloana a mutat coloana B. Este ca un proces de schimb.

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

Am mii de rânduri și iloc, loc, la metode de lucru lent. Cel puțin Vreau să folosesc DataFrame metodă se aplică. Am încercat câteva mostre de cod, dar acestea nu au de lucru.

Vreau să fac ceva mai jos: DataFrame.apply (rândul lambda: self.compare (rând, next (rând)), axa 1 =))

Am o metodă de comparare, dar nu am putut trece rândul de lângă metoda de comparare. Cum pot trece la metoda? De asemenea, sunt deschis să aud soluții mai repede ursi panda.

Întrebat 19/03/2020 la 21:58
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Cel mai bun nu pentru a face acest lucru , cu applycât va fi lent; poti sa te uiti la folosind shift, de exemplu ,

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

Devine un pic mai complicat dacă faci trecerea în cadrul unor grupuri, dar încă posibil.

Publicat 19/03/2020 la 22:03
sursa de către utilizator

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