Ich bin neugierig, ob es möglich ist, mehrere Funktionen auf eine Pandas Dataframe Spalte anzuwenden. Zum Beispiel, sagen wir mal, dass ich drei Funktionen haben:Wie man mehrere Funktionen auf eine Pandas Dataframe Spalte anwendet?
In:
def foo(col):
if 'hi' in col:
return 'TRUE'
def bar(col):
if 'bye' in col:
return 'TRUE'
def baz(col):
if 'ok' in col:
return 'TRUE'
und die folgenden Datenrahmen:
dfs = pd.DataFrame({'col':['The quick hi brown fox hi jumps over the lazy dog',
'The quick hi brown fox bye jumps over the lazy dog',
'The NO quick brown fox ok jumps bye over the lazy dog']})
Wenn ich möchte jede Funktion auf col
anzuwenden, in der Regel I wird die Pandas apply Funktion:
dfs['new_col1'] = dfs['col'].apply(foo)
dfs['new_col2'] = dfs['col'].apply(bar)
dfs['new_col3'] = dfs['col'].apply(baz)
dfs
Out:
col new_col1 new_col2 new_col3
0 The quick hi brown fox hi jumps over the lazy dog TRUE None None
1 The quick hi brown fox bye jumps over the lazy... TRUE TRUE None
2 The NO quick brown fox ok jumps bye over the l... None TRUE TRUE
Wie Sie jedoch sehen können, habe ich 3 Spalten erstellt. Also, meine Frage ist, wie man die oben genannten 3 Funktionen in großen Datenrahmen gleichzeitig effizient auf eine bestimmte Spalte anwenden? sollte das erwartete Ergebnis sein:
col new_col
0 The quick hi brown fox hi jumps over the lazy dog TRUE
1 The quick hi brown fox bye jumps over the lazy... TRUE, TRUE
2 The NO quick brown fox ok jumps bye over the l... TRUE, TRUE
Bitte beachte, dass ich weiß, dass ich die drei Spalten in einem einzigen verschmelzen kann. Trotzdem würde ich gerne wissen, ob die obige Frage möglich ist.
Danke, in Bezug auf die Leistung ist das optimal? –
Es hängt von Ihren Funktionen ab ... Das Beste ist es zu testen. – jezrael
@ J.Do nein, ich denke nicht, dass es schneller sein wird als die kombinierte Funktion. Hier sind zu viele Schritte: 3 Funktionsaufrufe, .join, eine andere if-Anweisung und apply. – AsheKetchum