2017-08-03 4 views
1

Est-il possible de transmettre un DataFrame à une fonction apply comme ceci?Transmettre l'élément de données à la fonction Apply pandas en tant qu'argument

df2 = df1.apply(func,axis=1,args=df2) 
def func(df1,df2): 
    # do stuff in df2 for each row of df1 
    return df2 

Les deux DataFrames n'ont pas la même longueur.

+0

Je suppose que 'return df2' devrait être indenté? – Alexander

+4

'args = (df2,)' Et oui c'est possible. Mais il y a 90% de chances d'une meilleure façon de faire cela que ce que vous faites. –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ merci pour l'indice. Suggestions pour de meilleurs moyens? –

Répondre

3

De l'df.apply documents:

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)

applique la fonction long de l'axe d'entrée de trame de données .

args: tuple

arguments de position pour passer à fonctionner en plus de la matrice /série.

La bonne façon est de passer vos arguments dans un tuple, comme ceci:

df1.apply(func, axis=1, args=(df2,)) 

D'autres améliorations à votre code serait possible que si l'on savait ce que vous essayez d'atteindre.