Ich kann eine neue Spalte in Panda hinzufügen, indem ich die Benutzerfunktion definiere und dann Apply anwende. Ich möchte dies jedoch unter Verwendung von Lambda; Gibt es einen Weg herum?Erstellen einer neuen Spalte in Panda mithilfe der Lambda-Funktion für zwei vorhandene Spalten
Zum Beispiel hat df
zwei Spalten a
und b
. Ich möchte eine neue Spalte c
erstellen, die der längsten Länge zwischen a
und b
entspricht.
Manche Dinge wie:
df['c'] = df.apply(lambda x, len(df['a']) if len(df['a']) > len(df['b']) or len(df['b']))
Ein Ansatz:
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
Dies funktioniert, wenn Sie die Syntaxfehler zu beheben. 'Lambda x' benötigt einen Doppelpunkt danach, und Ihrem Ausdruck fehlt 'else' (vielleicht sollte es anstelle von' oder' gehen). –
Danke für die schnelle Antwort, aber es funktioniert immer noch nicht. Hier ist der Code und die Fehlermeldung. Ich werde schätzen, wenn Sie irgendeine Hilfe zur Verfügung stellen können. df = pd.DataFrame ({'a': ['dfg', 'f', 'fff', 'fgrf', 'fghj'], 'b': ['sd', 'dfg', 'edr' , 'df', 'fghjky'}}) df ['c'] = df.apply (lambda x: len (x ['a']) wenn len (x ['a'])> len (x [] 'b']) else len (x ['b'])) KeyError: ('a', u'curred bei Index a ') –
Bitte Code nicht in Kommentare eingeben, stattdessen die Frage bearbeiten. –