250 votes

Pourquoi ma fonction Pandas "apply" faisant référence à plusieurs colonnes ne fonctionne-t-elle pas ?

J'ai quelques problèmes avec la fonction Pandas apply, lors de l'utilisation de colonnes multiples avec le dataframe suivant

df = DataFrame ({'a' : np.random.randn(6),
                 'b' : ['foo', 'bar'] * 3,
                 'c' : np.random.randn(6)})

et la fonction suivante

def my_test(a, b):
    return a % b

Lorsque j'essaie d'appliquer cette fonction avec :

df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)

Je reçois le message d'erreur :

NameError: ("global name 'a' is not defined", u'occurred at index 0')

Je ne comprends pas ce message, j'ai défini le nom correctement.

J'apprécierais grandement toute aide sur cette question

Mise à jour

Merci pour votre aide. J'ai effectivement fait quelques erreurs de syntaxe avec le code, l'index devrait être mis ''. Cependant, j'obtiens toujours le même problème en utilisant une fonction plus complexe telle que :

def my_test(a):
    cum_diff = 0
    for ix in df.index():
        cum_diff = cum_diff + (a - df['a'][ix])
    return cum_diff

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X