Se ho una funzioneRun funzione una sola volta per ogni riga in un dataframe Pandas
def do_irreversible_thing(a, b):
print a, b
E un dataframe, dire
df = pd.DataFrame([(0, 1), (2, 3), (4, 5)], columns=['a', 'b'])
Qual è il modo migliore per eseguire la funzione esattamente una volta per ogni riga in un dataframe panda. As indicato in altri questions, qualcosa come pf.apply chiamerà la funzione due volte per la prima riga. Anche usando NumPy
np.vectorize(do_irreversible_thing)(df.a, df.b)
causa la funzione di essere chiamato due volte sulla prima fila, così come df.T.apply()
o df.apply (..., asse = 1).
Esiste un modo più rapido o più semplice per chiamare la funzione con ogni riga rispetto a questo ciclo esplicito?
for idx, a, b in df.itertuples():
do_irreversible_thing(a, b)
volontà non 'df.apply (lambda x: do_irreversible_thing (x [ 'a'] , x ['b']), axis = 1) 'lavoro? inoltre l'idea è di usare metodi vettorizzati nella tua funzione in modo che operi sulle colonne dell'interesse. – EdChum
Sembra un lavoro per un ciclo 'for'. In genere non è un buon modo per vettorializzare gli effetti collaterali. – user2357112
Se gli effetti collaterali non dipendono dall'operazione per ogni riga, allora dovrebbe essere vettorizzabile – EdChum