Jestem w stanie dodać nową kolumnę w Panda, definiując funkcję użytkownika, a następnie za pomocą przycisku Zastosuj. Jednak chcę to zrobić za pomocą lambda; czy jest jakiś sposób obejścia?Tworzenie nowej kolumny w Panda przy użyciu funkcji lambda na dwóch istniejących kolumnach
Na przykład df
ma dwie kolumny: a
i b
. Chcę utworzyć nową kolumnę c
, która jest równa najdłuższej długości między a
i b
.
Niektóre rzeczy jak:
df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']))
Jedno podejście:
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
To zadziała raz naprawić błędy składniowe. 'lambda x' potrzebuje dwukropka po nim, a twojemu wyrażeniu brakuje' else' (może to powinno iść zamiast 'lub'). –
Dzięki za szybką reakcję, ale nadal nie działa. Oto kod i komunikat o błędzie. Będę wdzięczny, jeśli możesz udzielić jakiejkolwiek pomocy. df = pd.DataFrame ({'a': ['dfg', 'f', 'fff', 'fgrf', 'fghj'], 'b': ['sd', 'dfg', 'edr' , 'df', 'fghjky']}) df ['c'] = df.apply (lambda x: len (x ['a']) jeśli len (x ['a'])> len (x [ 'b']) else len (x ['b'])) KeyError: ('a', u'occurred at index a ') –
Proszę nie umieszczać kodu w komentarzach, [edytuj] pytanie. –