Ya discutimos en el artículo anterior, cómo reemplazar algunos valores de cadena conocidos ‚Äã‚Äãen un marco de datos. En esta publicación, usaremos expresiones regulares para reemplazar cadenas que tienen algún patrón.
Problema # 1: Se le presenta un marco de datos que contiene información detallada sobre varios eventos en diferentes ciudades Para aquellas ciudades que comiencen con la palabra clave "Nueva" o "Nueva", cámbiela a "Nueva".
Solución: vamos a utilizar una expresión regular para detectar tales nombres, y luego usaremos Dataframe.replace ()
para reemplazar esos nombres.
# import pandas como pd
importar
pandas como pd
# Vamos a crear el marco de datos
df
=
`Nueva Delhi`
,
`Venecia`
< código clase ="simple ">, ],
` Evento`
: [
`Música`
,
`Comedia`
,
` Tech_Summit`
],
`Coste`
# Vamos a crear un índice
index_
=
[pd.Period (
`02-2018`
), pd.Period (
` 04-2018`
),
pd.Período (
`06-2018`
), pd.Period (
` 10-2018`
), pd.Period (
`12-2018`
)]
# Establecer índice
Salida:
Ahora escribiremos una expresión regular para que coincida con la cadena, y luego usaremos Dataframe.replace ()
para reemplazar esos nombres.
# reemplazar las líneas correspondientes
)
# Imprime el marco de datos actualizado
imprimir
(df_updated)
Salida:
Como podemos ver en la salida, las líneas antiguas se han reemplazado con éxito por otras nuevas.
Problema n.º 2: se le proporciona un marco de datos que contiene información detallada sobre varios eventos en diferentes ciudades. Ciertos nombres de ciudades contienen algunos detalles adicionales entre paréntesis. Busque dichos nombres y elimine detalles adicionales.
Solución: Para esta tarea, escribiremos nuestra propia función personalizada utilizando expresiones regulares para definir y actualizar los nombres de estas ciudades. Además, usaremos Dataframe.apply()
para aplicar nuestra función personalizada a cada valor de columna.
# importar pandas como pd
import
pandas como pd
# Vamos a crear el marco de datos
df
=
pd.DataFrame ({
`City`
: [
` Nueva York (Ciudad) `
,
` Parague`
,
`Nueva Delhi (Delhi)`
,
` Evento`
: [
` Music`
,
`Poesía`
,
`Teatro`
,
`Comedia`
,
` Tech_Summit`
# Vamos No creemos un índice
index_
=
[pd .Period (
`02-2018`
), pd.Period (
`04-2018`
),
` 10-2018`
), pd.Period (
df.index
=
index_
# Imprimir el marco de datos
imprimir
Salida:
Ahora escribiremos nuestra propia función personalizada para que coincida con la descripción en los nombres de las ciudades.
# Importar re-lote para usar expresiones regulares
import
re
# Función para limpiar nombres
def
Clean_names (City_name):
# Buscar paréntesis abiertos en el título seguido de
re.search (
` (. * `
, City_name):
# Recuperar la posición del inicio del patrón
pos
=
re.search (< /código>
# devuelve el nombre borrado
return
City_name [: pos]
else
:
# si se requiere limpieza, devolver el mismo nombre
return
City_name
# Columnas de ciudad actualizadas
df [
`Ciudad`
]
=
df [
`Ciudad `
].
aplicar
(Clean_names)
# Imprime el marco de datos actualizado
print
(df)
Salida: