Python: Come passare riga e metodo riga successiva DataFrame.apply ()?

voti
0

Ho dataframe con migliaia di righe. La sua struttura è come sotto

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

Voglio mettere a confronto la colonna A della riga corrente e riga successiva. Se tali valori sono uguali voglio aggiungere il valore della colonna B che ha abbassare il valore di D colonna della riga rispetto che ha valore maggiore. Poi voglio rimuovere il valore della colonna commosso della colonna B. E 'come un processo di scambio.

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

Ho migliaia righe e iLOC, loc, a metodi di lavoro lento. Almeno io voglio usare dataframe metodo apply. Ho provato alcuni esempi di codice, ma non ha funzionato.

Voglio fare qualcosa, come di seguito: DataFrame.apply (riga lambda: self.compare (fila, vicino (riga)), l'asse = 1))

Ho un metodo compare ma non ho potuto passare riga successiva al metodo confrontare. Come posso passare al metodo? Anche io sono aperto a sentire le soluzioni più veloce panda.

È pubblicato 19/03/2020 alle 21:58
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Meglio non farlo con applyquanto sarà lenta; si può guardare utilizzando shift, ad esempio,

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

Ottiene un po 'più complicato se si sta facendo il turno all'interno dei gruppi, ma ancora possibile.

Risposto il 19/03/2020 a 22:03
fonte dall'utente

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