def apply(self, df): leg = pd.read_csv(self.leg_path, sep=';', dtype=str, low_memory=False)\ .append(pd.read_csv(self.leg_presidente_path, sep=';', dtype=str, low_memory=False)) idx = ["ANO_ELEICAO", "CODIGO_CARGO", "NUMERO_PARTIDO", "SIGLA_UE"] columns = df.columns.tolist() leg = leg.drop_duplicates(idx) before = len(df) df = df.set_index(idx) df = df.merge(leg.set_index(idx), how='left', left_index=True, right_index=True).reset_index() df['COMPOSICAO_LEGENDA'] = df['COMPOSICAO_COLIGACAO'] df['CODIGO_LEGENDA'] = df['SEQUENCIA_COLIGACAO'] df['SIGLA_LEGENDA'] = df['SIGLA_PARTIDO_y'] df['SIGLA_PARTIDO_x'] = df['SIGLA_PARTIDO_y'] df['NOME_COLIGACAO_x'] = df['NOME_COLIGACAO_y'] df = resolve_conflicts(df) after = len(df) if after > before: raise Exception(f'Duplicating Values {after - before}') return df[columns]
def join_candidatos(self, item, cand, df): if item['uf'] == 'ZZ': idx = [ "ANO_ELEICAO", "CODIGO_CARGO", "NUMERO_CANDIDATO", "NUM_TURNO" ] else: idx = [ "ANO_ELEICAO", "CODIGO_CARGO", "NUMERO_CANDIDATO", "NUM_TURNO", "SIGLA_UE" ] if item['uf'] == 'DF': df.loc[df['CODIGO_CARGO'] == '8', 'SIGLA_UE'] = 'DF' cand = cand.drop_duplicates(idx) df = df.set_index(idx) df = df.merge(cand.set_index(idx), how='left', left_index=True, right_index=True).reset_index() df = resolve_conflicts(df) df.loc[df['ID_CANDIDATO'].isnull(), 'ID_CANDIDATO'] = '0' return df[self.columns + ['NUMERO_PARTIDO', 'ID_CANDIDATO']]
def join_legendas_no_job(self, df, leg): idx = ["ANO_ELEICAO", "NUMERO_PARTIDO", "UF"] leg = leg.drop_duplicates(idx) df = df.set_index(idx) df = df.merge(leg.set_index(idx), how='left', left_index=True, right_index=True).reset_index() df.loc[df['ID_LEGENDA_x'] == '0', 'ID_LEGENDA_x'] = df['ID_LEGENDA_y'] df = resolve_conflicts(df) df.loc[df['ID_LEGENDA'].isnull(), 'ID_LEGENDA'] = '0' return df[self.columns + ['NUMERO_PARTIDO', 'ID_CANDIDATO', 'ID_LEGENDA']]
def apply(self, df: pd.DataFrame): if len(df[df['CODIGO_CARGO'] == '1']) > 0: cand = pd.read_csv(self.cand_2010_path, sep=';', dtype=str).set_index(self.idx) before = len(df) df = df.set_index(self.idx) df = df.merge(cand, left_index=True, right_index=True).reset_index() df = resolve_conflicts(df) df['SEQUENCIA_COLIGACAO'] = df['CODIGO_LEGENDA'] df = df[self.columns] if len(df) > before: raise Exception('Duplicating values') return df
def join_legendas(self, item, df, leg): if item['uf'] == 'ZZ': idx = ["ANO_ELEICAO", "CODIGO_CARGO", "NUMERO_PARTIDO"] else: idx = ["ANO_ELEICAO", "CODIGO_CARGO", "NUMERO_PARTIDO", "SIGLA_UE"] leg = leg.drop_duplicates(idx) df = df.set_index(idx) df = df.merge(leg.set_index(idx), how='left', left_index=True, right_index=True).reset_index() df = resolve_conflicts(df) df.loc[df['ID_LEGENDA'].isnull(), 'ID_LEGENDA'] = '0' return df[self.columns + ['NUMERO_PARTIDO', 'ID_CANDIDATO', 'ID_LEGENDA']]
def join_mun(self, vot): df = vot.merge(self.aux_mun, on='COD_MUN_TSE', how='left', sort=False) df = resolve_conflicts(df, prefer='_y', drop='_x') df = df.rename(columns={'SIGLA_UF': 'UF'}) return df