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.

1_uRBGXWKaeRjw6Ck2NrhcIA

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