Artigo original: How to combine multiple CSV files with 8 lines of code
Por que você precisa disso?
Copiar e colar manualmente não é um problema quando você não tem muitos arquivos com os quais trabalhar.
Imagine, porém, que você tenha mais de 100 arquivos para concatenar — está disposto a fazer isso manualmente? Fazer isso repetidamente é entediante e passível de erros.
Se todos os arquivos tiverem a mesma estrutura de tabela (mesmos cabeçalhos e número de colunas), vamos deixar esse pequeno script em Python fazer o trabalho por nós.
Etapa 1: Importar os pacotes e definir o diretório de trabalho
Altere "/mydir" pelo nome do diretório de trabalho desejado.
import os
import glob
import pandas as pd
os.chdir("/mydir")
Etapa 2: Use glob para corresponder ao padrão 'csv'
Faça a correspondência do padrão ('csv') e salve a lista dos nomes de arquivo na variável 'all_filenames'. Confira este link (em inglês) para aprender mais sobre a correspondência de expressões regulares.
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
Etapa 3: Combine todos os arquivos da lista e exporte como CSV
Use o pandas para concatenar todos os arquivos da lista e exportá-los como um arquivo CSV. O arquivo resultante é chamado de "combined_csv.csv" e fica localizado em seu diretório de trabalho.
#combinar todos os arquivos da lista
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#exportar para csv
combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')
encoding = ‘utf-8-sig’ é adicionado para vencer o problema de exportar em outros idiomas que não sejam o inglês.
Está pronto!
Este artigo foi inspirado em um problema diário real do autor. A estrutura de codificação vem de uma discussão no stackoverflow. O script completo para este tutorial está documentado no GitHub.
Obrigado pela leitura. Faça seus testes com o script, divirta-se e informe ao autor o que acha do artigo e do script!
Se gostou do que o autor escreveu, considere segui-lo no GitHub, no Medium e no Twitter. Não se esqueça, também de deixar uma estrela no GitHub. :P