• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

371
Vistas
¿Cómo reemplazar el espacio en blanco en una cadena en un marco de datos de pandas?

Supongamos que tengo un marco de datos de pandas como este:

 Person_1 Person_2 Person_3 0 John Smith Jane Smith Mark Smith 1 Harry Jones Mary Jones Susan Jones

Forma reproducible:

 df = pd.DataFrame([['John Smith', 'Jane Smith', 'Mark Smith'], ['Harry Jones', 'Mary Jones', 'Susan Jones'], columns=['Person_1', 'Person_2', 'Person_3'])

¿Cuál es la mejor manera de reemplazar el espacio en blanco entre el nombre y el apellido en cada nombre con un guión bajo _ para obtener:

 Person_1 Person_2 Person_3 0 John_Smith Jane_Smith Mark_Smith 1 Harry_Jones Mary_Jones Susan_Jones

¡Gracias de antemano!

about 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que también podría optar por DataFrame.replace .

 df.replace(' ', '_', regex=True)

Salidas

 Person_1 Person_2 Person_3 0 John_Smith Jane_Smith Mark_Smith 1 Harry_Jones Mary_Jones Susan_Jones

A partir de una evaluación comparativa aproximada, parece predecible que la solución NumPy de piRSquared es de hecho la más rápida, al menos para esta pequeña muestra, seguida de DataFrame.replace .

 %timeit df.values[:] = np.core.defchararray.replace(df.values.astype(str), ' ', '_') 10000 loops, best of 3: 78.4 µs per loop %timeit df.replace(' ', '_', regex=True) 1000 loops, best of 3: 932 µs per loop %timeit df.stack().str.replace(' ', '_').unstack() 100 loops, best of 3: 2.29 ms per loop

Curiosamente , sin embargo, parece que la solución Pandas de piRSquared escala mucho mejor con marcos de datos más grandes que DataFrame.replace , e incluso supera a la solución NumPy.

 >>> df = pd.DataFrame([['John Smith', 'Jane Smith', 'Mark Smith']*10000, ['Harry Jones', 'Mary Jones', 'Susan Jones']*10000])
 %timeit df.values[:] = np.core.defchararray.replace(df.values.astype(str), ' ', '_') 10 loops, best of 3: 181 ms per loop %timeit df.replace(' ', '_', regex=True) 1 loop, best of 3: 4.14 s per loop %timeit df.stack().str.replace(' ', '_').unstack() 10 loops, best of 3: 99.2 ms per loop
about 3 years ago · Santiago Trujillo Denunciar

0

Use el método de replace del marco de datos:

 df.replace('\s+', '_',regex=True,inplace=True)
about 3 years ago · Santiago Trujillo Denunciar

0

pandas

stack / unstack con str.replace

 df.stack().str.replace(' ', '_').unstack() Person_1 Person_2 Person_3 0 John_Smith Jane_Smith Mark_Smith 1 Harry_Jones Mary_Jones Susan_Jones

numpy

 pd.DataFrame( np.core.defchararray.replace(df.values.astype(str), ' ', '_'), df.index, df.columns) Person_1 Person_2 Person_3 0 John_Smith Jane_Smith Mark_Smith 1 Harry_Jones Mary_Jones Susan_Jones

prueba de tiempo
ingrese la descripción de la imagen aquí

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda