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

0

241
Vistas
Python extrayendo cadena

Tengo un marco de datos donde una de las columnas que está en formato de cadena se ve así

 filename 0 Machine02-2022-01-28_00-21-45.blf.424 1 Machine02-2022-01-28_00-21-45.blf.425 2 Machine02-2022-01-28_00-21-45.blf.426 3 Machine02-2022-01-28_00-21-45.blf.427 4 Machine02-2022-01-28_00-21-45.blf.428

Quiero que mi columna se vea así

 filename 0 2022-01-28 00-21-45 424 1 2022-01-28 00-21-45 425 2 2022-01-28 00-21-45 426 3 2022-01-28 00-21-45 427 4 2022-01-28 00-21-45 428

Probé este código

 df['filename'] = df['filename'].str.extract(r"(\d{4}-\d{1,2}-\d{1,2})_(\d{2}-\d{2}-\d{2}).*\.(\d+)", r"\1 \2 \3")

Recibo este error, tipos de operandos no admitidos para &: 'str' e 'int'.
¿Puede alguien decirme dónde estoy haciendo mal?

over 3 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Use str.replace y agregue .*- para eliminar cadenas como Machine02- :

 df['filename'] = df['filename'].str.replace(r".*-(\d{4}-\d{1,2}-\d{1,2})_(\d{2}-\d{2}-\d{2}).*\.(\d+)", r"\1 \2 \3") print(df) # Output filename 0 2022-01-28 00-21-45 424 1 2022-01-28 00-21-45 425 2 2022-01-28 00-21-45 426 3 2022-01-28 00-21-45 427 4 2022-01-28 00-21-45 428
over 3 years ago · Santiago Trujillo Denunciar

0

por favor intente esto:

 df['filename'] = df['filename'].str.split('-',1).apply(lambda x:' '.join(x[1].split('_')).replace('.blf.',' '))
over 3 years ago · Santiago Trujillo Denunciar

0

Regex son agradables, pero a veces es más fácil y más legible hacer un reemplazo, si los argumentos nunca cambian:

 df['filename'] = df['filename'].str.replace('Machine02-','',regex=False) df['filename'] = df['filename'].str.replace('.blf.',' ',regex=False)
over 3 years ago · Santiago Trujillo Denunciar

0

Usar reemplazar

 df['filename']=df['filename'].str.replace('Machine|\.blf\.',' ',regex=True).str.strip().str.replace('^\d+\-','',regex=True) filename 0 2022-01-28_00-21-45 424 1 2022-01-28_00-21-45 425 2 2022-01-28_00-21-45 426 3 2022-01-28_00-21-45 427 4 2022-01-28_00-21-45 428

o

Extraer valores entre e02 y .blf

 df['filename']=df['filename'].str.extract('((?<=[e02])[\w|\-]+(?=[.blf]))') filename 0 02-2022-01-28_00-21-45 1 02-2022-01-28_00-21-45 2 02-2022-01-28_00-21-45 3 02-2022-01-28_00-21-45 4 02-2022-01-28_00-21-45
over 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