Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

542
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!