Potencia tu flujo de datos con pasos claros y reproducibles: en pocos minutos puedes generar UUIDs por fila con MD5 y limpiar saltos de línea del body en un DataFrame de pandas. Este enfoque, con logging y transformaciones encadenadas, mejora trazabilidad y prepara el dataset para enriquecerlo con metadatos.
¿Cómo generar UUIDs por fila con hashlib MD5?
Crear identificadores estables por registro evita duplicados y facilita referenciar artículos. La idea central: hashear la URL de cada fila con hashlib y usar su hex digest como índice.
Importar hashlib al inicio para evitar errores posteriores.
Registrar con logger.info lo que sucede: transparencia en el flujo.
Aplicar apply por fila (axis=1) sobre la columna URL.
Codificar a UTF-8 para obtener bytes antes del MD5.
Convertir a representación hexadecimal con hexdigest.
Guardar en la columna UUID y hacer set_index('UUID') sin in place para encadenar llamadas.
Puntos clave: aplicar por fila, codificar a bytes, usar hexdigest, evitar in place para conservar el encadenamiento.
¿Cómo limpiar el body eliminando saltos de línea?
Para un análisis consistente, conviene remover los new lines del body. Se sigue un patrón de transformaciones simples y legibles.
Tomar la columna body por fila con apply y lambda.
Convertir a lista de letras con list(...).
Usar map para replace('\n', '') en cada letra (espacio vacío).
Reunir letras de vuelta con ''.join(...) para obtener el string limpio.
Asignar el resultado a df['body'] y devolver el DataFrame.
¿Cuál es la implementación paso a paso?
defremove_new_lines_from_body(df): logger.info("removing new lines from body") strip_body = df.apply(lambda row:"".join(list(map(lambda letter: letter.replace("\n",""),list(row["body"]),))), axis=1,) df["body"]= strip_body
return df
Beneficios: texto uniforme, pipeline explícito, mismo patrón de transformación que facilita pruebas y mantenimiento.
¿Cómo probar y depurar los pasos en la receta?
La validación se hace ejecutando el script y corrigiendo detalles de nombres y duplicados.
Ejecutar: python newspaper. Ver el logger para ubicar fallos.
Corregir nombres de funciones mal referenciadas en los pasos, por ejemplo, asegurar que coincidan con el declarado, como en "generate UUIDs for rows".
Evitar duplicados: si se definió dos veces fill_missing_titles, renombrar una para usar el nombre correcto del paso.
Confirmar resultado: el body ya no muestra saltos de línea y el DataFrame tiene índice UUID.
Con este patrón de transformaciones encadenadas y mensajes de info, el dataset queda limpio y listo para enriquecer con metadatos y habilitar un análisis más rico.
¿Te quedó alguna duda del código o de los pasos? Cuéntame en los comentarios y con gusto te ayudo a resolverlo.