2016-07-12 11 views
0

ich eine CSV-Datei wie folgt aussehen:Split Spalten mit ‚‘ and Drop eines der neuen Spalten

"NoDemande;"NoUsager";"Sens";"IdVehicule";"NoConducteur";"NoAdresse";"Fait";"aPaye";"MethodePaiement";"ArgentPercu";"HeurePrevue";"HeureDebutTrajet";"HeureArriveeSurSite";"HeureEffective" 
    0003;"2021";"+";"157Véh";"0002";"5712";"1";"";"";"";"07/07/2015 06:30:04";"07/07/2015 06:15:48";"07/07/2015 06:32:14";"07/07/2015 06:32:23" 
    0265;"0496";"+";"161Véh";"0035";"04075";"1";"";"";"";"07/07/2015 06:35:04";"07/07/2015 05:09:55";"07/07/2015 06:36:18";"07/07/2015 06:36:27" 
    0004;"2208";"+";"157Véh";"0002";"5713";"1";"";"";"";"07/07/2015 06:45:04";"07/07/2015 06:32:23";"07/07/2015 06:40:05";"07/07/2015 06:40:10" 

Was ich tun möchte:

  1. Split einige der Säulen, die Herstellung Spalten mit 'Datum' und 'Zeit' in zwei.
  2. Speichern Sie nur eine Spalte von "Date" und lassen Sie die anderen fallen.

Und ich versuchte, wie folgt aus:

#coding=latin-1 

import pandas as pd 
import glob 

pd.set_option('expand_frame_repr', False) 

path = r'D:\Python27\mypfe\data_test' 
allFiles = glob.glob(path + "/*.csv") 
frame = pd.DataFrame() 
list_ = [] 
for file_ in allFiles: 
    df = pd.read_csv(file_,index_col=None,header=0,sep=';') 
    s1 = df['HeurePrevue'].apply(lambda x: x.split(' ')) 
    df['Date'] = s1.apply(lambda x: x[0]) 
    df['HeurePrevue'] = s1.apply(lambda x: x[1]) 

frame = pd.concat(list_) 

print frame 

Es arbeitet mit einer Spalte, aber wenn ich das gleiche mit dem zweiten tun wollen es nicht mehr funktioniert. Was soll ich tun, damit es mit allen meinen Spalten funktioniert, während die anderen gleich bleiben?

+0

Ich sehe nicht, wo Sie versuchen, die folgenden Spalten nur die erste – EdChum

+0

mir gelingt nur in Aufspalten des ersten aufzuspalten ... – ch36r5s

Antwort

0
import io 
import pandas as pd 

raw_df = io.StringIO("""\ 
HeurePrevue   HeureDebutTrajet HeureArriveeSurSite  HeureEffective 
06/07/2015 05:30:04 06/07/2015 16:54:31 06/07/2015 16:54:35 06/07/2015 16:54:38 
06/07/2015 06:10:04 06/07/2015 05:38:39 06/07/2015 06:29:51 06/07/2015 06:30:06 
06/07/2015 06:10:04 06/07/2015 05:38:39 06/07/2015 06:29:51 06/07/2015 06:30:06 
""") 
df = pd.read_csv(raw_df, index_col=None, skiprows=1, header=None, 
       delim_whitespace=True) 

df = df[[0, 1, 3, 5, 7]] 
df.columns = ['Date', 'HeurePrevue', 'HeureDebutTrajet', 'HeureArriveeSurSite', 
       'HeureEffective'] 

Ausgang:

  Date HeurePrevue HeureDebutTrajet HeureArriveeSurSite HeureEffective 
0 06/07/2015 05:30:04   16:54:31   16:54:35  16:54:38 
1 06/07/2015 06:10:04   05:38:39   06:29:51  06:30:06 
2 06/07/2015 06:10:04   05:38:39   06:29:51  06:30:06 
+0

Es funktioniert nicht, wenn ich Ich möchte meine Spalten aus Dateien holen, ich kann keinen 'Pfad' in' StringIO' verwenden. – ch36r5s

+0

Der 'StringIO' Teil ist einfach so, dass der Code durch ein einfaches Kopieren-Einfügen-Auswerten testbar ist. Legen Sie die Zeile 'raw_df = ...' ab und ändern Sie 'row_df' im nächsten mit dem Namen Ihrer CSV-Datei. –

+0

@ ch36r5s Wenn diese oder irgendeine Antwort Ihre Frage gelöst hat, beachten Sie bitte [akzeptieren] (http://meta.stackexchange.com/q/5234/179419), indem Sie auf das Häkchen klicken. Dies zeigt der breiteren Gemeinschaft, dass Sie eine Lösung gefunden haben und sowohl dem Antworter als auch Ihnen einen guten Ruf verschaffen. Es besteht keine Verpflichtung, dies zu tun. –