2016-07-12 51 views
0

我有一個CSV文件中像這樣的:分離列用「」和去掉一個新列

"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" 

我想要做什麼:

  1. 拆分某些列,使得'日期'和'時間'分爲兩列。
  2. 只保存「日期」的一列並刪除其中一列。

而且我想是這樣的:

#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 

它與一列,但是當我想要做同樣的第二它不再起作用。我應該怎麼做才能使其與我的所有專欄一起工作,同時保留其他專欄的內容?

+0

我沒有看到你試圖分裂隨後僅列第 – EdChum

+0

我只成功在分裂前... – ch36r5s

回答

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'] 

輸出:

  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

它不工作時,我想從文件中獲得我的列,我不能在'StringIO'中使用'path'。 – ch36r5s

+0

'StringIO'部分就是這樣,代碼可以通過簡單的複製粘貼評估進行測試。放下'raw_df = ...'這行,然後在下一行中改變'raw_df'的csv文件名稱。 –

+0

@ ch36r5s如果這個或任何答案已經解決了您的問題,請點擊複選標記考慮[接受它](http://meta.stackexchange.com/q/5234/179419)。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 –