33from typing import Dict , List , Optional , Tuple
44
55import datetime as dt
6- from dataclasses import dataclass , field
6+ from dataclasses import dataclass
7+
8+ import pandas as pd
79
810
911@dataclass
@@ -140,6 +142,10 @@ class Pais:
140142 Huso horarios de la subdivisión. En general, cada subdivisión tiene un solo huso horario pero no siempre.
141143 subdivisiones: Dict[str, Subdivision]
142144 Diccionario de subdivisiones que comprenden el país.
145+ df: pandas.DataFrame
146+ Un DataFrame de pandas de una fila con la información del país.
147+ subdivisiones_df: pandas.DataFrame
148+ Un DataFrame de pandas con la información de cada subdivision el país.
143149 """
144150
145151 nombre : str
@@ -160,3 +166,60 @@ class Pais:
160166
161167 def __repr__ (self ):
162168 return f"<{ self .__class__ .__name__ } :{ self .nombre_comun } >"
169+
170+ def _pais_df (self ) -> pd .DataFrame :
171+ pais_data = {
172+ "abrev" : self .abrev ,
173+ "alpha_2" : self .alpha_2 ,
174+ "alpha_3" : self .alpha_3 ,
175+ "capital" : self .capital ,
176+ "capital_horario" : self .capital_horario ,
177+ "capital_lat" : self .capital_latlong [0 ],
178+ "capital_long" : self .capital_latlong [1 ],
179+ "codigo" : self .codigo ,
180+ "es_independiente" : self .es_independiente ,
181+ "es_isla" : self .es_isla ,
182+ "fecha_independencia" : self .fecha_independencia ,
183+ "huso_horario" : self .husos_horarios ,
184+ "nombre" : self .nombre ,
185+ "nombre_comun" : self .nombre_comun ,
186+ "nombre_pronunciacion_local" : self .nombre_pronunciacion_local ,
187+ "subdivisiones" : [
188+ subdivision .nombre
189+ for subdivision in self .subdivisiones .values ()
190+ ],
191+ }
192+ return pd .DataFrame (data = [pais_data ])
193+
194+ def _subdivision_df (self ) -> pd .DataFrame :
195+ subdivision_data = []
196+ for key , subdivision in self .subdivisiones .items ():
197+ subdivision_data .append (
198+ {
199+ "abrev" : subdivision .abrev ,
200+ "capital" : subdivision .capital .nombre ,
201+ "capital_horario" : subdivision .capital_horario ,
202+ "capital_lat" : subdivision .capital_latlong [0 ],
203+ "capital_long" : subdivision .capital_latlong [1 ],
204+ "alpha_2" : subdivision .codigo ,
205+ "codigo_numerico" : subdivision .codigo_numerico ,
206+ "es_contigua" : subdivision .es_contigua ,
207+ "es_isla" : subdivision .es_isla ,
208+ "fecha_de_fundacion" : subdivision .fecha_de_fundacion ,
209+ "huso_horario" : subdivision .husos_horarios [0 ],
210+ "nombre" : subdivision .nombre ,
211+ "nombre_comun" : subdivision .nombre_comun ,
212+ "nombre_pronunciacion_local" : subdivision .nombre_pronunciacion_local ,
213+ "nombres_nativos" : "," .join (
214+ [
215+ f"{ value } ({ key } )"
216+ for key , value in subdivision .nombres_nativos .items ()
217+ ]
218+ ),
219+ }
220+ )
221+ return pd .DataFrame (subdivision_data )
222+
223+ def __post_init__ (self ):
224+ self .df = self ._pais_df ()
225+ self .subdivisiones_df = self ._subdivision_df ()
0 commit comments