Función Pandas Series.str.replace()
Series.str.replace()Es una función en Pandas que se utiliza para reemplazar contenido específico en cadenas.
En el proceso de procesamiento de datos, a menudo necesitamos realizar operaciones de reemplazo en el texto, como corregir texto erróneo, estandarizar formatos de datos, eliminar caracteres innecesarios, etc.replace()La función puede reemplazar de manera flexible el contenido especificado en cadenas y admite coincidencia con expresiones regulares.
Definición de la palabra:replaceSignifica 'reemplazar', es decir, sustituir el contenido antiguo por uno nuevo.
Sintaxis básica y parámetros
str.replace()Es el método de acceso a cadenas de Series, por lo que primero necesitas tener una Series que contenga cadenas, y luego mediante.strel accesor para invocarla.
Formato de sintaxis
Series.str.replace(pat, repl, regex=False)
Descripción de parámetros
| Parámetro | Tipo | Requerido | Descripción | Valor predeterminado |
|---|---|---|---|---|
| pat | str o regex | Obligatorio | El patrón a reemplazar, puede ser una cadena normal o una expresión regular (cuando regex=True). | - |
| repl | str o callable | Obligatorio | El contenido de reemplazo, puede ser una cadena o una función invocable (para reemplazo avanzado). | - |
| regex | bool | Opcional | Indica si el parámetro pat debe tratarse como expresión regular. El valor predeterminado es False. | False |
Descripción de la función
- Valor de retorno: Devuelve una nueva Series con el contenido reemplazado.
- Efecto: Reemplaza el contenido coincidente en cada elemento de cadena de la Series por contenido nuevo.
- Nota: De forma predeterminada se usa coincidencia con cadenas normales; si se necesita coincidencia con expresiones regulares, debe configurar
regex=True。
Ejemplos
Vamos a, a través de una serie de ejemplos de simples a complejos, dominar completamentestr.replace()su uso.
Ejemplo 1: Uso básico - Reemplazo simple de cadenas
Ejemplo
# Crear una Series que contenga texto
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])
# Reemplazar 'ap' por 'XX'
result = s.str.replace('ap', 'XX')
print("Series original:")
print(s)
print("nResultado después del reemplazo:")
print(result)
Salida:
原始 Series: 0 apple 1 banana 2 apricot 3 pineapple dtype: object 替换后的结果: 0 XXle 1 banana 2 XXricot 3 XXneXXple
Análisis del código:
s.str.replace('ap', 'XX')Reemplaza todas las apariciones de 'ap' por 'XX'.- De forma predeterminada, solo se reemplaza la primera coincidencia (si aparece varias veces en la cadena, solo se reemplaza la primera).
- Se pueden reemplazar todas las coincidencias añadiendo un indicador de expresión regular.
Ejemplo 2: Usar expresiones regulares para reemplazar todas las coincidencias
Cuando se necesita reemplazar todas las coincidencias, se puede usar una expresión regular.
Ejemplo
# Crear una Series que contenga texto
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])
# Usar una expresión regular para reemplazar todos los 'ap' por 'XX'
result = s.str.replace('ap', 'XX', regex=True)
print("Series original:")
print(s)
print("nResultado después de reemplazar todos los 'ap':")
print(result)
Salida:
原始 Series: 0 apple 1 banana 2 apricot 3 pineapple dtype: object 替换所有 'ap' 后的结果: 0 XXle 1 banana 2 XXricot 3 XXneXXple
Análisis del código:
- Configurar
regex=TrueDespués, usar una expresión regular para realizar la coincidencia. - En la expresión regular,
'ap'coincide con todas las apariciones de 'ap' en la cadena. - 'pineapple' tiene dos 'ap', ambos son reemplazados por 'XX'.
Ejemplo 3: Reemplazar números y símbolos
replace()Puede usarse para limpiar datos, por ejemplo, eliminar números o símbolos especiales.
Ejemplo
# Crear una Series con contenido mixto
s = pd.Series(['phone: 123-456-7890', 'price: $99.99', 'date: 2024-01-01'])
# Eliminar todos los números
result_digits = s.str.replace(r'd', '', regex=True)
# Eliminar todos los caracteres no alfanuméricos (conservar espacios)
result_special = s.str.replace(r'[^a-zA-Z0-9s]', '', regex=True)
print("Series original:")
print(s)
print("nDespués de eliminar todos los números:")
print(result_digits)
print("nDespués de eliminar todos los caracteres especiales:")
print(result_special)
Salida:
原始 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
Análisis del código:
r'd'Es una expresión regular que coincide con cualquier dígito.r'[^a-zA-Z0-9s]'Coincide con todos los caracteres que no son alfanuméricos ni espacios.- Esta es una operación muy común en la limpieza de datos.
Ejemplo 4: Usar una función de devolución de llamada para reemplazar
replEl parámetro puede ser una función, para una lógica de reemplazo más compleja.
Ejemplo
# Crear una Series que contenga texto
s = pd.Series(['hello', 'world', 'ejemplo', 'python'])
# Usar una función de devolución de llamada para convertir a mayúsculas la cadena coincidente
result = s.str.replace(r'[aeiou]', lambda m: m.group(0).upper(), regex=True)
print("Series original:")
print(s)
print("nDespués de convertir las vocales a mayúsculas:")
print(result)
Salida:
原始 Series: 0 hello 1 world 2 ejemplo 3 python dtype: object 将元音字母转为大写后: 0 hEllo 1 wOrld 2 example 3 pythOn
Análisis del código:
- La función de devolución de llamada recibe un objeto de coincidencia; se puede usar
m.group(0)para obtener el contenido coincidente. - Convierte las vocales (a, e, i, o, u) a mayúsculas.
- Esta es una buena manera de implementar una lógica de reemplazo más compleja.
Ejemplo 5: Estandarizar el formato de datos
En proyectos reales,replace()se utiliza a menudo para estandarizar los formatos de datos.
Ejemplo
# Simular los nombres de país ingresados por el usuario (formato no uniforme)
countries = pd.Series(['USA', 'U.S.A.', 'U.S.A', 'usa', 'us', 'United States'])
# Reemplazar uniformemente por el nombre estándar
result = countries.replace({
'USA': 'US',
'U.S.A.': 'US',
'U.S.A': 'US',
'usa': 'US',
'us': 'US',
'United States': 'US'
})
print("Nombres de países originales:")
print(countries)
print("nResultado después de unificar:")
print(result)
Salida:
原始国家名称: 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
Análisis del código:
- Este ejemplo utiliza el método de
replace()Series (no str.replace). - Se puede pasar un diccionario para reemplazar múltiples valores de una vez.
- Unifica las diferentes representaciones en un formato estándar.
Notas
- De forma predeterminada (
regex=False),patel parámetro se trata como una cadena normal; solo se reemplaza la primera coincidencia. - Configurar
regex=TrueDespués, usar una expresión regular para la coincidencia; se pueden reemplazar todas las coincidencias. - Algunos caracteres especiales en la expresión regular (como
.、*etc.) deben escaparse. - Si la Series contiene valores NaN,
replace()se devolverá NaN. - La función devuelve una nueva Series y no modifica los datos originales.
Otras extensiones
Funciones comunes de Pandas