La création d'une nouvelle colonne dans Panda en utilisant une fonction lambda sur deux colonnes

Je suis en mesure d'ajouter une nouvelle colonne dans Panda par la définition de fonction de l'utilisateur et ensuite à l'aide d'appliquer. Cependant, je tiens à le faire à l'aide de lambda; est-il un moyen de contourner?

Par Exemple, df a deux colonnes a et b. Je veux créer une nouvelle colonne c qui est égale à la longueur la plus longue entre a et b.

Quelque chose comme:

df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']) )

Une approche:

df = pd.DataFrame({'a':['dfg','f','fff','fgrf','fghj'], 'b' : ['sd','dfg','edr','df','fghjky']})

df['c'] = df.apply(lambda x: max([len(x) for x in [df['a'], df['b']]]))
print df
      a       b   c
0   dfg      sd NaN
1     f     dfg NaN
2   fff     edr NaN
3  fgrf      df NaN
4  fghj  fghjky NaN
Cela fonctionne une fois que vous avez corrigé les erreurs de syntaxe. lambda x besoin d'un colon, et votre expression manque else (peut-être qu'il devrait aller au lieu de or).
Merci pour la réponse rapide, cependant il toujours pas de travail. Voici le code et le message d'erreur. Je vais apprécier si vous pouvez fournir de l'aide. df = pd.DataFrame({'a':['dfg','f','fff','fgrf','fghj'], 'b' : ['sd','dfg','ede','df','fghjky']}) df['c'] = df.appliquer(lambda x: len(x['a']) if len(x['a']) > len(x['b']) d'autre len(x['b'])) KeyError: ('a', u'occurred à l'index')
Merci de ne pas mettre de code dans les commentaires, modifier la question de la place.
Désolé c'est ma première fois ici. J'essaie de modifier ma question, mais encore ce n'est pas venue dans une belle formaté façon
Dans le mode edit, il y a un bouton qui ouvre le formatage de l'aide. Tout d'abord, vous pouvez sélectionner le code et appuyez sur Ctrl-K, qui va mettre en retrait par 4 espaces.

OriginalL'auteur piyush sharma | 2015-11-12