Python: Hogyan átadni sor és a következő sorban DataFrame.apply () metódus?

szavazat
0

Van DataFrame ezer sort. Szerkezete az alábbiak

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

Szeretném összehasonlítani az oszlopot aktuális sor és a következő sorban. Ha ezek az értékek megegyeznek szeretnék, hogy az érték a B oszlop, amely alacsonyabb az érték, hogy a D oszlopon képest sorban, amely nagyobb értéket. Aztán el akarja távolítani az áthelyezett oszlop értéke oszlop B. Olyan, mint egy csere folyamatát.

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

Van ezer sorból és iloc, loc, a módszerek működnek lassú. Legalábbis szeretném használni DataFrame alkalmazni módszert. Próbáltam néhány kódmintákat de nem működött.

Szeretnék tenni valamit az alábbiak szerint: DataFrame.apply (lambda sor: self.compare (sor, a következő (sor)), tengely = 1))

Van egy módszer, de össze nem tudtam átadni a következő sort a összehasonlítani módszer. Hogyan adja át a módszer? Szintén nyitott vagyok hallani gyorsabb pandák megoldásokat.

A kérdést 19/03/2020 21:58
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Legjobb, ha nem csinálni, hogy applya lassú lesz; akkor nézd meg a shiftpl

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

Kap egy kicsit bonyolultabb, ha csinálsz a váltás a csoportokon belül, de még mindig lehetséges.

Válaszolt 19/03/2020 22:03
a forrás felhasználó

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