Pandas Series.str.replace() Funktion

Pandas 常用函数Pandas Häufige Funktionen


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 setzenregex=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

import pandas as pd

# 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:

  1. s.str.replace('ap', 'XX')Ersetzt alle Vorkommen von 'ap' durch 'XX'.
  2. Standardmäßig wird nur der erste Treffer ersetzt (wenn er mehrfach in der Zeichenfolge vorkommt, wird nur der erste ersetzt).
  3. 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

import pandas as pd

# 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:

  • Setregex=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

import pandas as pd

# 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

import pandas as pd

# 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 kannstm.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

import pandas as pd

# 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 Seriesreplace()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.
  • Setregex=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.

Pandas 常用函数Pandas Häufige Funktionen

Andere Erweiterungen