Ho alcuni problemi con i Panda funzione di applicare quando si utilizzano più colonne con il seguente dataframePandas: Come usare applicare la funzione a più colonne
df = DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
e la seguente funzione
def my_test(a, b):
return a % b
Quando Provo ad applicare questa funzione con:
df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)
Viene visualizzato il messaggio di errore:
NameError: ("global name 'a' is not defined", u'occurred at index 0')
Non capisco questo messaggio, ho definito il nome corretto.
vivamente apprezzare qualsiasi aiuto su questo tema
Aggiornamento
Grazie per il vostro aiuto. Ho fatto davvero degli errori di sintassi con il codice, l'indice dovrebbe essere messo ''. Tuttavia ho ancora lo stesso problema utilizzando una funzione più complessa come ad esempio:
def my_test(a):
cum_diff = 0
for ix in df.index():
cum_diff = cum_diff + (a - df['a'][ix])
return cum_diff
Grazie
Probabilmente è stato spostato da questo molto tempo fa, ma penso che la funzione definita nell'aggiornamento abbia una variabile indefinita: df. – rocarvaj