Python: Jak předat řádek a způsob další řádek DataFrame.apply ()?

hlasů
0

Mám datový rámec s tisíci řádky. Jeho struktura je níže

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

Chci porovnat sloupci A aktuálního řádku a další řádek. Pokud se tyto hodnoty jsou stejné chci přidat hodnotu sloupce B, která má nižší hodnotu D sloupci srovnání řádku, který má větší hodnotu. Pak chci odstranit přesunuta hodnotu sloupce sloupci B. Je to jako odkládací proces.

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

Mám tisíce řádků a iLOC, loc, na metody fungují pomalu. Přinejmenším chci použít datovém metodu aplikovat. Zkoušel jsem nějaké ukázky kódu, ale nefungoval.

Chci udělat něco níže: DataFrame.apply (lambda řádek: self.compare (row, next (row)), osa = 1))

Mám porovnávat metody, ale nemohl jsem projít další řádek k porovnání metody. Jak mohu předat ho k metodě? Jsem také otevřený slyšet rychlejší pandy řešení.

Položena 19/03/2020 v 21:58
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Nejlepší nedělat, které se apply, jak to bude pomalé; se můžete podívat na používání shift, např

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

Dostane trochu složitější, pokud děláte posun v rámci skupiny, ale stále je to možné.

Odpovězeno 19/03/2020 v 22:03
zdroj uživatelem

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