Ich würde die .str.replace()
Methode gerne auf eine Pandas-Spalte anwenden, aber mit einer anderen Pandas-Spalte als Muster
Zum Beispiel,
df = pd.DataFrame({'str1': ['abc','abcd','def'], 'str2': ['b','ab', 'ef']})
Ich möchte eine neue Spalte erstellen, str1_replaced
indem ich str1
die str2
Zeichenfolgen durch eine leere Zeichenfolge ersetze .
Hier ist das Ergebnis, das ich erhalten möchte:
str1 str2 str1_replaced
0 abc b ac
1 abcd ab cd
2 def ef d
Ich habe versucht zu tun:
df['str1_replaced'] = df['str1'].str.replace(df['str2'],"")
Aber ich bekomme folgenden Fehler
TypeError: 'Series'-Objekte sind veränderbar, daher können sie nicht gehasht werden
Gibt es eine Möglichkeit, dies zu erreichen, ohne eine for-Schleife zu verwenden? Ich überlege, eine Lambda-Funktion zu verwenden, kann aber nicht genau herausfinden, wie es geht.
Versuchen Sie apply
:
df['str1_replaced'] = df.apply(lambda x: x['str1'].replace(x['str2'], ''), axis=1)
>>> df
str1 str2 str1_replaced
0 abc b ac
1 abcd ab cd
2 def ef d
>>>
Oder versuchen Sie es mit dem Listenverständnis:
df['str1_replaced'] =[x.replace(y, '') for x, y in zip(df['str1'], df['str2'])]
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen