100 votes

comment fusionner 200 fichiers csv en Python

Les gars, j'ai ici 200 fichiers csv séparés nommés de SH (1) à SH (200). Je veux les fusionner en un seul fichier csv. Comment puis-je le faire ?

109voto

wisty Points 4280

Comme l'a dit ghostdog74, mais cette fois avec des en-têtes :

fout=open("out.csv","a")
# first file:
for line in open("sh1.csv"):
    fout.write(line)
# now the rest:    
for num in range(2,201):
    f = open("sh"+str(num)+".csv")
    f.next() # skip the header
    for line in f:
         fout.write(line)
    f.close() # not really needed
fout.close()

79voto

blinsay Points 199

Pourquoi ne pouvez-vous pas juste sed 1d sh*.csv > merged.csv ?

Parfois, il n'est même pas nécessaire d'utiliser python !

65voto

scottlittle Points 4898

Utilisez réponse acceptée de StackOverflow pour créer une liste de fichiers csv que vous voulez ajouter et ensuite exécuter ce code :

import pandas as pd
combined_csv = pd.concat( [ pd.read_csv(f) for f in filenames ] )

Et si vous voulez l'exporter vers un seul fichier csv, utilisez ceci :

combined_csv.to_csv( "combined_csv.csv", index=False )

17voto

ghostdog74 Points 86060
fout=open("out.csv","a")
for num in range(1,201):
    for line in open("sh"+str(num)+".csv"):
         fout.write(line)    
fout.close()

12voto

Norfeldt Points 1383

Je vais juste jeter un autre exemple de code dans le panier :

from glob import glob

with open('singleDataFile.csv', 'a') as singleFile:
    for csvFile in glob('*.csv'):
        for line in open(csvFile, 'r'):
            singleFile.write(line)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X