Fonction Pandas Series.str.replace()
Series.str.replace()C'est une fonction de Pandas utilisée pour remplacer un contenu spécifié dans des chaînes de caractères.
Lors du traitement des données, nous devons souvent effectuer des opérations de remplacement de texte, telles que corriger du texte erroné, normaliser les formats de données, supprimer des caractères indésirables, etc.replace()La fonction peut remplacer de manière flexible un contenu spécifié dans des chaînes de caractères et prend en charge la correspondance par expression régulière.
Signification du mot:replaceCela signifie « replace », c'est-à-dire remplacer l'ancien contenu par le nouveau contenu.
Syntaxe de base et paramètres
str.replace()C'est la méthode d'accès aux chaînes de caractères de Series, vous devez donc d'abord disposer d'une Series contenant des chaînes, puis utiliser le.strl'accesseur pour l'appeler.
Format de syntaxe
Series.str.replace(pat, repl, regex=False)
Description du paramètre
| Paramètre | Type | Requis | Description | Valeur par défaut |
|---|---|---|---|---|
| pat | str ou regex | Requis | Le motif à remplacer peut être une chaîne simple ou une expression régulière (lorsque regex=True). | - |
| repl | str ou callable | Requis | Le contenu de remplacement peut être une chaîne ou une fonction appelable (pour un remplacement avancé). | - |
| regex | bool | Optional | Indique si le paramètre pat doit être traité comme une expression régulière. Valeur par défaut : False. | False |
Description de la fonction
- Valeur de retour: Retourne une nouvelle Series après remplacement.
- Effet: Remplace le contenu correspondant dans chaque élément de type chaîne de la Series par un nouveau contenu.
- Remarque: Par défaut, une correspondance de chaîne simple est utilisée. Si une correspondance par expression régulière est nécessaire, vous devez définir
regex=True。
Exemples
Passons en revue une série d'exemples, du simple au complexe, pour maîtriser à fondstr.replace()son utilisation.
Exemple 1 : Utilisation de base - Remplacement de chaîne simple
Exemple
# Créer une Series contenant du texte
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])
# Remplacer 'ap' par 'XX'
result = s.str.replace('ap', 'XX')
print("Série d'origine :")
print(s)
print("nRésultat après remplacement :")
print(result)
Résultat de sortie :
原始 Series: 0 apple 1 banana 2 apricot 3 pineapple dtype: object 替换后的结果: 0 XXle 1 banana 2 XXricot 3 XXneXXple
Explication du code :
s.str.replace('ap', 'XX')Remplace toutes les occurrences de 'ap' par 'XX'.- Par défaut, seule la première correspondance est remplacée (si elle apparaît plusieurs fois dans la chaîne, seule la première est remplacée).
- Vous pouvez remplacer toutes les correspondances en ajoutant un indicateur d'expression régulière.
Exemple 2 : Utilisation d'expressions régulières pour remplacer toutes les correspondances
Lorsque vous devez remplacer toutes les correspondances, vous pouvez utiliser des expressions régulières.
Exemple
# Créer une Series contenant du texte
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])
# Utilisez une expression régulière pour remplacer tous les 'ap' par 'XX'
result = s.str.replace('ap', 'XX', regex=True)
print("Série d'origine :")
print(s)
print("nRésultat après avoir remplacé tous les 'ap' :")
print(result)
Résultat de sortie :
原始 Series: 0 apple 1 banana 2 apricot 3 pineapple dtype: object 替换所有 'ap' 后的结果: 0 XXle 1 banana 2 XXricot 3 XXneXXple
Explication du code :
- Set
regex=Trueà True, puis utilisez des expressions régulières pour la correspondance. - Dans une expression régulière,
'ap'correspond à toutes les occurrences de 'ap' dans la chaîne. - 'pineapple' contient deux occurrences de 'ap', et les deux sont remplacées par 'XX'.
Exemple 3 : Remplacement des nombres et des symboles
replace()Il peut être utilisé pour nettoyer des données, par exemple en supprimant des nombres ou des symboles spéciaux.
Exemple
# Créer une Series contenant du contenu mixte
s = pd.Series(['téléphone : 123-456-7890', 'prix : $99.99', 'date : 2024-01-01'])
# Supprimer tous les nombres
result_digits = s.str.replace(r'd', '', regex=True)
# Supprimer tous les caractères non alphanumériques (conserver les espaces)
result_special = s.str.replace(r'[^a-zA-Z0-9s]', '', regex=True)
print("Série d'origine :")
print(s)
print("nAprès avoir supprimé tous les nombres :")
print(result_digits)
print("nAprès avoir supprimé tous les caractères spéciaux :")
print(result_special)
Résultat de sortie :
原始 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
Explication du code :
r'd'est une expression régulière qui correspond à n'importe quel chiffre.r'[^a-zA-Z0-9s]'correspond à tous les caractères qui ne sont ni alphanumériques ni des espaces.- C'est une opération très courante dans le nettoyage des données.
Exemple 4 : Utilisation d'une fonction de rappel pour le remplacement
replLe paramètre peut être une fonction pour une logique de remplacement plus complexe.
Exemple
# Créer une Series contenant du texte
s = pd.Series(['hello', 'world', 'example', 'python'])
# Utiliser une fonction de rappel pour convertir la chaîne correspondante en majuscules
result = s.str.replace(r'[aeiou]', lambda m: m.group(0).upper(), regex=True)
print("Série d'origine :")
print(s)
print("nAprès conversion des voyelles en majuscules :")
print(result)
Résultat de sortie :
原始 Series: 0 hello 1 world 2 example 3 python dtype: object 将元音字母转为大写后: 0 hEllo 1 wOrld 2 example 3 pythOn
Explication du code :
- La fonction de rappel reçoit un objet de correspondance, et vous pouvez utiliser
m.group(0)pour obtenir le contenu correspondant. - Convertit les voyelles (a, e, i, o, u) en majuscules.
- C'est un bon moyen d'implémenter une logique de remplacement plus complexe.
Exemple 5 : Normalisation des formats de données
Dans les projets réels,replace()il est souvent utilisé pour standardiser les formats de données.
Exemple
# Simuler des noms de pays saisis par l'utilisateur (formats incohérents)
countries = pd.Series(['USA', 'U.S.A.', 'U.S.A', 'usa', 'us', 'United States'])
# Remplacer uniformément par des noms standard
result = countries.replace({
'USA': 'US',
'U.S.A.': 'US',
'U.S.A': 'US',
'usa': 'US',
'us': 'US',
'United States': 'US'
})
print("Noms de pays originaux :")
print(countries)
print("Résultat après unification :")
print(result)
Résultat de sortie :
原始国家名称: 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
Explication du code :
- Cet exemple utilise la Series
replace()méthode (pas str.replace). - Vous pouvez passer un dictionnaire pour remplacer plusieurs valeurs en lot.
- Unifie diverses représentations différentes en un format standard.
Notes
- Par défaut (
regex=False),patle paramètre est traité comme une chaîne simple, et seule la première correspondance est remplacée. - Set
regex=Trueà True, utiliser des expressions régulières pour la correspondance, et toutes les correspondances peuvent être remplacées. - Certains caractères spéciaux dans les expressions régulières (tels que
.、*etc.) doivent être échappés. - Si la Series contient des valeurs NaN,
replace()il renverra NaN. - Cette fonction renvoie une nouvelle Series et ne modifie pas les données d'origine.
Autres extensions
Fonctions courantes de Pandas