Sono in grado di aggiungere una nuova colonna in Panda definendo la funzione utente e quindi utilizzando apply. Tuttavia, voglio farlo usando lambda; c'è un modo per aggirare?Creazione di una nuova colonna in Panda utilizzando la funzione lambda su due colonne esistenti
Ad esempio, df
ha due colonne a
e b
. Voglio creare una nuova colonna c
che è uguale alla lunghezza più lunga tra a
e b
.
qualche cosa come:
df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']))
Un approccio:
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
Ciò funzionerà una volta a correggere gli errori di sintassi. 'lambda x' ha bisogno di due punti dopo di esso, e la tua espressione è priva di' else' (forse dovrebbe andare al posto di 'or'). –
Grazie per la risposta rapida, tuttavia non funziona ancora. Ecco il codice e il messaggio di errore. Apprezzerò se puoi fornire qualsiasi aiuto. df = pd.DataFrame ({'a': ['dfg', 'f', 'fff', 'fgrf', 'fghj'], 'b': ['sd', 'dfg', 'edr' , 'df', 'fghjky']}) df ['c'] = df.apply (lambda x: len (x ['a']) se len (x ['a'])> len (x [ 'b']) else len (x ['b'])) KeyError: ('a', u'occurrato all'indice a ') –
Si prega di non inserire il codice nei commenti, [modifica] la domanda invece. –