1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

[Python] normalizar csvs com colunas duplicadas gerados a partir de uma extração [fechada]

Discussão em 'Python' iniciado por Stack, Setembro 23, 2024.

  1. Stack

    Stack Membro Participativo

    realizei uma extração de tabelas dee pdfs para csv, porém em algumas ocorrências, ele duplicou as colunas (talvez por causa de vírgulas extras) e então estou tentando normalizar isso removendo as duplicatas de todos os arquivos

    os arquivos com erros possuem esse seguinte formato (gerados a partir do meu código com a enumeração das duplicatas que o pandas faz):

    DISCRIMINAÇÃO,VALOR(M),VALOR(M).1,VALOR(M).2,VALOR(M).3,VALOR(M).4,VALOR(M).5,VALOR(M).6,NOTAS,NOTAS.1,municipios
    Caixa e Bancos,Caixa e Bancos,Caixa e Bancos,"R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49",1.0,AMELIA RODRIGUES
    (+) Haveres Financeiros,(+) Haveres Financeiros,(+) Haveres Financeiros,(+) Haveres Financeiros,(+) Haveres Financeiros,(+) Haveres Financeiros,(+) Haveres Financeiros,"R$ 0,00","R$ 0,00",2.0,AMELIA RODRIGUES
    (=) Disponibilidade Financeira,(=) Disponibilidade Financeira,(=) Disponibilidade Financeira,"R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49","R$ 3.533.376,49",3.0,AMELIA RODRIGUES
    (-) Consignações e Retenções,(-) Consignações e Retenções,(-) Consignações e Retenções,"R$ 4.324.290,19","R$ 4.324.290,19","R$ 4.324.290,19","R$ 4.324.290,19","R$ 4.324.290,19","R$ 4.324.290,19",4.0,AMELIA RODRIGUES
    (-) Restos a Pagar de Exercícios Anteriores,(-) Restos a Pagar de Exercícios Anteriores,(-) Restos a Pagar de Exercícios Anteriores,"R$ 1.987.297,04","R$ 1.987.297,04","R$ 1.987.297,04","R$ 1.987.297,04","R$ 1.987.297,04","R$ 1.987.297,04",5.0,AMELIA RODRIGUES
    (=) Disponibilidade de Caixa,(=) Disponibilidade de Caixa,"-R$ 2.778.210,74","-R$ 2.778.210,74","-R$ 2.778.210,74","-R$ 2.778.210,74","-R$ 2.778.210,74","-R$ 2.778.210,74","-R$ 2.778.210,74",6.0,AMELIA RODRIGUES
    (-) Restos a Pagar do Exercício,(-) Restos a Pagar do Exercício,(-) Restos a Pagar do Exercício,(-) Restos a Pagar do Exercício,"R$ 759.145,89","R$ 759.145,89","R$ 759.145,89","R$ 759.145,89","R$ 759.145,89",7.0,AMELIA RODRIGUES
    (-) Obrigações a Pagar Consórcios,(-) Obrigações a Pagar Consórcios,(-) Obrigações a Pagar Consórcios,(-) Obrigações a Pagar Consórcios,(-) Obrigações a Pagar Consórcios,"R$ 65.301,47","R$ 65.301,47","R$ 65.301,47","R$ 65.301,47",8.0,AMELIA RODRIGUES
    (-) Restos a Pagar Cancelados,(-) Restos a Pagar Cancelados,(-) Restos a Pagar Cancelados,(-) Restos a Pagar Cancelados,(-) Restos a Pagar Cancelados,(-) Restos a Pagar Cancelados,(-) Restos a Pagar Cancelados,"R$ 0,00","R$ 0,00",9.0,AMELIA RODRIGUES
    (-) Despesas de Exercícios Anteriores,(-) Despesas de Exercícios Anteriores,(-) Despesas de Exercícios Anteriores,"R$ 1.559.225,30","R$ 1.559.225,30","R$ 1.559.225,30","R$ 1.559.225,30","R$ 1.559.225,30","R$ 1.559.225,30",10.0,AMELIA RODRIGUES
    (-) Baixas Indevidas de Dívidas de Curto Prazo,(-) Baixas Indevidas de Dívidas de Curto Prazo,(-) Baixas Indevidas de Dívidas de Curto Prazo,(-) Baixas Indevidas de Dívidas de Curto Prazo,(-) Baixas Indevidas de Dívidas de Curto Prazo,(-) Baixas Indevidas de Dívidas de Curto Prazo,(-) Baixas Indevidas de Dívidas de Curto Prazo,"R$ 0,00","R$ 0,00",11.0,AMELIA RODRIGUES
    (-) Indenização a servidores,(-) Indenização a servidores,(-) Indenização a servidores,(-) Indenização a servidores,(-) Indenização a servidores,(-) Indenização a servidores,"R$ 100,00","R$ 100,00","R$ 100,00",12.0,AMELIA RODRIGUES
    (=) Saldo,(=) Saldo,"-R$ 5.161.983,40","-R$ 5.161.983,40","-R$ 5.161.983,40","-R$ 5.161.983,40","-R$ 5.161.983,40","-R$ 5.161.983,40","-R$ 5.161.983,40",13.0,AMELIA RODRIGUES




    e esse é o meu código, ele itera sobre dirtórios, usa df.loc para remover as colunas alguém tem alguma sugestão do que eu posso fazer ou se há algum erro no meu código?

    def tratar_arquivo(filepath, output_dir):
    try:
    # Ler o arquivo CSV
    df = pd.read_csv(filepath)
    print(f"Lendo o arquivo: {filepath}")

    # Verificar colunas antes da remoção de duplicadas
    print(f"Colunas antes da remoção de duplicadas: {df.columns.tolist()}")

    # Manter apenas a primeira ocorrência de colunas duplicadas
    df = df.loc[:, ~df.columns.duplicated(keep='first')]

    # Verificar colunas após a remoção de duplicadas
    print(f"Colunas após a remoção de duplicadas: {df.columns.tolist()}")

    Continue reading...

Compartilhe esta Página