2017-08-18 4 views
0

So habe ich etwa 3.000 csv-Dateien und sie sind alle unterschiedlich benannt. Beispiel, CDEE.csv und die Struktur ist nur eine Zeile mit dem Namen und einem Betrag.Python Verketten mehrerer CSV-Dateien ohne Header

CDEE | 3993 

Ich versuchte zu verketten und ich halte

CDEE | 3993 | AASE| 3939 ......... 

bekommen, aber ich will

CDEE | 3992 
AASE | 3939 
xxxx | yyyy 

Hier ist der Code: Import Pandas als pd import glob, o

path = "/home/username/myfolder" 
os.chdir(path) 
results = pd.DataFrame([]) 

for counter, file in enumerate(glob.glob(".csv*")): 
    namedf = pd.read_csv(file,skiprows=0, usecols=[1,2,3]) 
    results = results.append(namedf) 

results.to_csv('Combined.csv') 

Danke für jede Hilfe, ich schätze es wirklich!

+3

Sind Sie tatsächlich mit dem Datenrahmen etwas zu tun oder einfach nur Willst du die Dateien reinpacken? Als 'cat * .csv> csv_files.all' sieht im Moment ziemlich vielversprechend aus ... –

+0

Ich habe das erst gesehen, als ich den Post bearbeitet habe. Ich bin bei dir. – piRSquared

+0

@ JonClements sollten Sie das als Antwort schreiben ... – Aaron

Antwort

1

Sie müssen pd.concat verwenden, die here

import pandas as pd 
import os 
import glob 

path = "." 
os.chdir(path) 
results = pd.DataFrame() 

for counter, current_file in enumerate(glob.glob("*.csv")): 
    namedf = pd.read_csv(current_file, header=None, sep="|") 
    print(namedf) 
    results = pd.concat([results, namedf]) 

results.to_csv('Combined.csv', index=None, header=None, sep="|") 

Hinweis dokumentiert ist, dass es einige Fehler zu beheben:

  • Änderung glob.glob(".csv*")-glob.glob("*.csv"), um alle Dateien zu erhalten, die
  • mit .csv Ende um genau die folgende Ausgabe zu erhalten:
 
CDEE|3992 
AASE|3939 
xxxx|yyyy 

Sie müssen df.to_csv mit index=None rufen nicht um den Index zu schreiben, header=None nicht den Header zu schreiben und sep="|"| als Trennzeichen verwenden anstelle des Standard-,

Verwandte Themen