2016-12-09 1 views
2

Ich möchte in Pfad strukturierte CSV-Dateien importieren und als eine CSV-Ausgabe. Mein Code funktioniert nur mit einem Pfad und einer manuell eingegebenen CSV-Datei.So lesen Sie mehrere CSV-Dateien in Pandas und Ausgabe in einer CSV-Datei

import csv 
import pandas as pd 
import numpy as np 
import glob 

cols = ['Date', 'Time', 'Duration', 'IP', 'Request'] 
pd.DataFrame(columns=cols).to_csv('out9.csv', index=False, sep=';') 

for df in pd.read_csv('query.csv', sep='\s', header=None, chunksize=6): 
    df.reset_index(drop=True, inplace=True) 
    df.fillna('', inplace=True) 
    d = pd.DataFrame([df.loc[3,0], df.loc[3,1], ' '.join(df.loc[3,4:8]), ' '.join(df.loc[4,4:6]), ' '.join(df.loc[5,4:])]) 
    d.T.to_csv('out.csv', index=False, header=False, mode='a', sep=';') 

Ich weiß, es gibt einige Themen, wie viele CSV-Dateien zu lesen, aber in meinem Fall haben leider nicht geholfen.

Ich möchte über ihn lesen:

: C\Desktop\Files\*.csv 

Informationen zu den CSV-Dateien: Alle gleich aufgebaut sind, das heißt, kein Header, gleiche Strukturen. Und ich möchte zu Beginn meines Codes alles in einem Ordner einlesen und als formatiert nochmal ausgeben.

Deshalb, wenn möglich, den Code so wenig wie möglich zu verändern, würde ich nur einige csv lesen, statt dieser ein ‚query.csv‘

Dank!

Antwort

3

Ich glaube, Sie glob verwenden können:

import glob 

cols = ['Date', 'Time', 'Duration', 'IP', 'Request'] 
pd.DataFrame(columns=cols).to_csv('out9.csv', index=False, sep=';') 

for file in glob.glob('C:/Desktop/Files/*.csv'): 
    for df in pd.read_csv(file, sep='\s', header=None, chunksize=6): 
     df.reset_index(drop=True, inplace=True) 
     ... 
     ... 
+0

'für Datei in glob.glob:' statt;) – MMF

+0

@MMF sicher, danke ('Files/* csv.'). – jezrael

+0

für Datei in glob.glob ('C:/Benutzer/xxx/Desktop/NZIP_Logfiles/*. Csv'): ist mein Pfad, aber ich bekomme den Fehler: Zeile 14, in d = pd.DataFrame ([df .loc [3,0], df.loc [3,1], .join (df.loc [3,4: 8]), .join (df.loc [4,4: 6]) ', .join (df.loc [5,4:])]]) TypeError: Sequenzelement 2: erwartete Zeichenfolge, float gefunden –

Verwandte Themen