Pandas Series.str.replace() Funktion
Series.str.replace()Es ist eine Funktion in Pandas, die verwendet wird, um angegebenen Inhalt in Strings zu ersetzen.
Bei der Datenverarbeitung müssen wir häufig Textersetzungsoperationen durchführen, z. B. fehlerhaften Text korrigieren, Datenformate standardisieren, unerwünschte Zeichen entfernen usw.replace()Die Funktion kann angegebenen Inhalt in Strings flexibel ersetzen und unterstützt den Abgleich mit regulären Ausdrücken.
Wortbedeutung:replaceEs bedeutet "replace", was angibt, alten Inhalt durch neuen Inhalt zu ersetzen.
Grundlegende Syntax und Parameter
str.replace()Es ist die String-Accessor-Methode von Series, daher benötigen Sie zuerst eine Series, die Strings enthält, und verwenden dann die.strAccessor verwenden, um sie aufzurufen.
Syntaxformat
Series.str.replace(pat, repl, regex=False)
Parameterbeschreibung
| Parameter | Type | Erforderlich | Beschreibung | Standardwert |
|---|---|---|---|---|
| pat | str oder regex | Erforderlich | Das zu ersetzende Muster kann ein einfacher String oder ein regulärer Ausdruck sein (wenn regex=True). | - |
| repl | str oder callable | Erforderlich | Der Ersetzungsinhalt kann ein String oder eine aufrufbare Funktion sein (für erweiterte Ersetzung). | - |
| regex | bool | Optional | Ob der pat-Parameter als regulärer Ausdruck behandelt werden soll. Standardwert ist False. | False |
Funktionsbeschreibung
- Rückgabewert: Gibt eine neue Series nach der Ersetzung zurück.
- Effekt: Ersetzt den übereinstimmenden Inhalt in jedem String-Element der Series durch neuen Inhalt.
- Hinweis: Standardmäßig wird ein einfacher String-Abgleich verwendet. Wenn ein Abgleich mit regulärem Ausdruck erforderlich ist, müssen Sie dies setzen
regex=True。
Beispiele
Gehen wir eine Reihe von Beispielen von einfach bis komplex durch, um sie gründlich zu meisternstr.replace()seine Verwendung gründlich beherrschen.
Beispiel 1: Grundlegende Verwendung – Einfache String-Ersetzung
Beispiel
# Eine Series mit Text erstellen
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])
# Ersetze 'ap' durch 'XX'
result = s.str.replace('ap', 'XX')
print("Originalreihe:")
print(s)
print("nErgebnis nach der Ersetzung:")
print(result)
Ausgabeergebnis:
原始 Series: 0 apple 1 banana 2 apricot 3 pineapple dtype: object 替换后的结果: 0 XXle 1 banana 2 XXricot 3 XXneXXple
Code-Erklärung:
s.str.replace('ap', 'XX')Ersetzt alle Vorkommen von 'ap' durch 'XX'.- Standardmäßig wird nur der erste Treffer ersetzt (wenn er mehrfach in der Zeichenfolge vorkommt, wird nur der erste ersetzt).
- Sie können alle Treffer ersetzen, indem Sie ein Flag für reguläre Ausdrücke hinzufügen.
Beispiel 2: Verwendung regulärer Ausdrücke zum Ersetzen aller Treffer
Wenn Sie alle Treffer ersetzen müssen, können Sie reguläre Ausdrücke verwenden.
Beispiel
# Eine Series mit Text erstellen
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])
# Verwenden Sie einen regulären Ausdruck, um alle 'ap' durch 'XX' zu ersetzen
result = s.str.replace('ap', 'XX', regex=True)
print("Originalreihe:")
print(s)
print("nErgebnis nach dem Ersetzen aller 'ap':")
print(result)
Ausgabeergebnis:
原始 Series: 0 apple 1 banana 2 apricot 3 pineapple dtype: object 替换所有 'ap' 后的结果: 0 XXle 1 banana 2 XXricot 3 XXneXXple
Code-Erklärung:
- Set
regex=Trueauf True, dann verwenden Sie reguläre Ausdrücke für den Abgleich. - In einem regulären Ausdruck,
'ap'findet alle Vorkommen von 'ap' in der Zeichenkette. - 'pineapple' hat zwei Vorkommen von 'ap', und beide werden durch 'XX' ersetzt.
Beispiel 3: Ersetzen von Zahlen und Symbolen
replace()Es kann verwendet werden, um Daten zu bereinigen, z. B. zum Entfernen von Zahlen oder Sonderzeichen.
Beispiel
# Erstellen Sie eine Series mit gemischtem Inhalt
s = pd.Series(['Telefon: 123-456-7890', 'Preis: $99.99', 'Datum: 2024-01-01'])
# Alle Zahlen entfernen
result_digits = s.str.replace(r'd', '', regex=True)
# Alle nicht alphanumerischen Zeichen entfernen (Leerzeichen beibehalten)
result_special = s.str.replace(r'[^a-zA-Z0-9s]', '', regex=True)
print("Originalreihe:")
print(s)
print("nNach dem Entfernen aller Zahlen:")
print(result_digits)
print("nNach dem Entfernen aller Sonderzeichen:")
print(result_special)
Ausgabeergebnis:
原始 Series: 0 phone: 123-456-7890 1 price: $99.99 2 date: 2024-01-01 dtype: object 移除所有数字后: phone: --- price: $.$ date: ------ 移除所有特殊字符后: phone 1234567890 price 9999 date 20240101
Code-Erklärung:
r'd'ist ein regulärer Ausdruck, der auf jede Ziffer passt.r'[^a-zA-Z0-9s]'stimmt mit allen Zeichen überein, die weder alphanumerisch noch Leerzeichen sind.- Dies ist eine sehr häufige Operation bei der Datenbereinigung.
Beispiel 4: Verwendung einer Callback-Funktion zum Ersetzen
replDer Parameter kann eine Funktion für komplexere Ersetzungslogik sein.
Beispiel
# Eine Series mit Text erstellen
s = pd.Series(['hello', 'world', 'example', 'python'])
# Verwende eine Callback-Funktion, um die übereinstimmende Zeichenkette in Großbuchstaben umzuwandeln
result = s.str.replace(r'[aeiou]', lambda m: m.group(0).upper(), regex=True)
print("Originalreihe:")
print(s)
print("nNach der Umwandlung von Vokalen in Großbuchstaben:")
print(result)
Ausgabeergebnis:
原始 Series: 0 hello 1 world 2 example 3 python dtype: object 将元音字母转为大写后: 0 hEllo 1 wOrld 2 example 3 pythOn
Code-Erklärung:
- Die Callback-Funktion empfängt ein Match-Objekt, und du kannst
m.group(0)um den übereinstimmenden Inhalt zu erhalten. - Wandelt Vokale (a, e, i, o, u) in Großbuchstaben um.
- Dies ist eine gute Möglichkeit, komplexere Ersetzungslogik zu implementieren.
Beispiel 5: Datenformate standardisieren
In realen Projekten,replace()es wird oft verwendet, um Datenformate zu standardisieren.
Beispiel
# Ländernamen aus Benutzereingaben simulieren (inkonsistente Formate)
countries = pd.Series(['USA', 'U.S.A.', 'U.S.A', 'usa', 'us', 'United States'])
# Einheitlich durch Standardnamen ersetzen
result = countries.replace({
'USA': 'US',
'U.S.A.': 'US',
'U.S.A': 'US',
'usa': 'US',
'us': 'US',
'United States': 'US'
})
print("Ursprüngliche Ländernamen:")
print(countries)
print("nErgebnis nach der Vereinheitlichung:")
print(result)
Ausgabeergebnis:
原始国家名称: 0 USA 1 U.S.A. 2 U.S.A 3 usa 4 us 5 United States dtype: object 统一后的结果: 0 US 1 US 2 US 3 US 4 0 US dtype: object
Code-Erklärung:
- Dieses Beispiel verwendet die Series
replace()Methode (nicht str.replace). - Sie können ein Wörterbuch übergeben, um mehrere Werte stapelweise zu ersetzen.
- Vereinheitlicht verschiedene unterschiedliche Darstellungen in ein Standardformat.
Hinweise
- Standardmäßig (
regex=False),patder Parameter wird als einfache Zeichenkette behandelt, und nur die erste Übereinstimmung wird ersetzt. - Set
regex=Trueauf True gesetzt, werden reguläre Ausdrücke zum Abgleichen verwendet, und alle Übereinstimmungen können ersetzt werden. - Einige Sonderzeichen in regulären Ausdrücken (wie z. B.
.、*etc.) müssen mit Escapezeichen versehen werden. - Wenn die Series NaN-Werte enthält,
replace()es wird NaN zurückgeben. - Diese Funktion gibt eine neue Series zurück und verändert die Originaldaten nicht.
Andere Erweiterungen
Pandas Häufige Funktionen