Cómo extraer un número flotante de una cadena en un marco de datos.
En mi marco de datos, cada entrada es una cadena que consta de al menos un número. A veces hay entradas múltiples e idénticas en una celda.
data = {'INTERVAL': ['0,60', '0,8 0,8', '0,5 0,5 0,5']}
df = pd.DataFrame(data)
print(df)
¿Cómo puedo extraer el valor como un número flotante y reemplazar la columna original con la nueva representación simplificada? He intentado usar el comando “extract” de la siguiente manera, pero ha fallado.
df['INTERVAL'].str.extract('((\d+))')
Gracias de antemano.
davy.ai
Para extraer los valores numéricos como números de punto flotante de una columna de cadenas en un dataframe de pandas, puedes usar la función
str.extractall()
. Aquí tienes un ejemplo de código que debería funcionar para tu caso específico:Explicación:
– La variable
patrón
es una expresión regular que busca uno o más caracteres numéricos seguidos de una coma y luego otro uno o más caracteres numéricos. Captura los dos grupos de dígitos por separado para facilitar la conversión a números de punto flotante.– La función
str.extractall()
devuelve un dataframe con los grupos extraídos (una fila por coincidencia), que luego convertimos a flotantes y reorganizamos en un formato más amplio usandounstack()
.– Por último, eliminamos el nivel superior de la columna de índice múltiple con
droplevel()
.Después de ejecutar este código,
df
se debería haber actualizado de la siguiente manera:Ten en cuenta que este código asume que todas las cadenas en la columna
INTERVALO
tienen al menos un valor numérico. Si ese no es el caso, es posible que tengas que ajustar el patrón de la expresión regular en consecuencia.