Pandas: apply function mit mehreren Parametern auf mehreren Spalten gleichzeitig

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hallo,

Code: Alles auswählen

def replace_multiple(target, search_this, replace_with):
    for letter in search_this:
        target = target.replace(letter, replace_with)
    return target
    
   
df['first_name'] = df.apply(lambda row: replace_multiple(target=row['first_name'], search_this="ßẞ", replace_with='SS'), axis=1)
df['last_name'] = df.apply(lambda row: replace_multiple(target=row['last_name'], search_this="ßẞ", replace_with='SS'), axis=1)

Bekomme ich das Replacen nicht auch in einer Zeile hin? Stehe irgendwie auf dem Schlauch, weil das target sich pro Spalte ändert. :D

LG und danke.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Hier geht das ganz einfach per regulärem Ausdruck:

Code: Alles auswählen

df['first_name'] = df['first_name'].str.replace('[ßẞ]', 'SS')
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Sirius3 hat geschrieben: Mittwoch 24. August 2022, 12:29 Hier geht das ganz einfach per regulärem Ausdruck:

Code: Alles auswählen

df['first_name'] = df['first_name'].str.replace('[ßẞ]', 'SS')
Aber das müsste ich dann ja für den df[''last_name] nochmal ausführen. Ich dachte ich könnte first_name und last_name in einer Zeile abfrühstücken, irgendwie.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Das sind ja zwei unterschiedliche Spalten und die str-Operationen beziehen sich immer nur auf eine Spalte.
Antworten