Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

553
Vistas
¿Puedo usar métodos abstractos para importar formato específico de archivo de datos de pandas (Python)?

Tengo una clase FileSet con un método _process_series , que contiene un montón de bloques if - elif que hacen formato específico de etiqueta de pandas.Series filetag

 elif filetag == "EntityA": ps[filetag+"_Id"] = str(ps[filetag+"_Id"]).strip() ps[filetag+"_DateOfBirth"] = str(pd.to_datetime(ps[filetag+"_DateOfBirth"]).strftime('%Y-%m-%d')).strip() ps[filetag+"_FirstName"] = str(ps[filetag+"_FirstName"]).strip().capitalize() ps[filetag+"_LastName"] = str(ps[filetag+"_LastName"]).strip().capitalize() ps[filetag+"_Age"] = relativedelta(datetime.today(), datetime.strptime(ps[filetag+"_DateOfBirth"], "%Y-%m-%d")).years return ps

Me gustaría definir un método de format abstracto en la clase y mantener estos bloques de formato en módulos separados que se importan cuando se llama a _process_series para una etiqueta de filetag determinada. Perdone el pseudocódigo, pero algo como:

 for tag in filetag: from my_formatters import tag+'_formatter' as fmt ps = self.format(pandas_series, fmt) return ps

Y el módulo contendría el bloque de formato:

 # my_formatters.EntityA_formatter ps[filetag+"_Id"] = str(ps[filetag+"_Id"]).strip() ps[filetag+"_DateOfBirth"] = str(pd.to_datetime(ps[filetag+"_DateOfBirth"]).strftime('%Y-%m-%d')).strip() ps[filetag+"_FirstName"] = str(ps[filetag+"_FirstName"]).strip().capitalize() ps[filetag+"_LastName"] = str(ps[filetag+"_LastName"]).strip().capitalize() ps[filetag+"_Age"] = relativedelta(datetime.today(), datetime.strptime(ps[filetag+"_DateOfBirth"], "%Y-%m-%d")).years return ps
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede crear una función en su propio archivo .py e importarla. Si crea la misma función en cada archivo, puede llamarla.

aquí está f1.py:

 def gimme(): return 'format 1'

aquí está f2.py:

 def gimme(): return 'format 2'

Entonces tu archivo principal:

 module_names = ['f1','f2'] for module_name in module_names: import_test = __import__(module_name) result = import_test.gimme() result = import_test.gimme() print(result)

Lo que da la salida:

 format 1 format 2
over 4 years ago · Santiago Trujillo Denunciar

0

¿Por qué no usar globals con asterisco?

 from my_formatters import * for tag in filetag: fmt = globals()[tag + '_formatter'] ps = self.format(pandas_series, fmt) return ps

Convertí tu pseudocódigo a código real.

documentación globals :

Devuelve un diccionario que representa la tabla de símbolos global actual. Este es siempre el diccionario del módulo actual (dentro de una función o método, este es el módulo donde se define, no el módulo desde el que se llama).

over 4 years ago · Santiago Trujillo Denunciar

0

Su pseudocódigo podría convertirse en código real así:

 import my_formatters for tag in filetag: fmt = getattr(my_formatters, tag + '_formatter') ps = self.format(pandas_series, fmt) return ps
over 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda