2017-08-07 387 views
1

我是python 3的新手我必須從.csv文件獲取日期時間值並將其分割爲單獨的日期和時間值列。在csv中分割日期時間以分隔日期和時間列

CSV文件:運行後

輸出

C1,C2,V2,Time_Stamp 
0.1,1.3,-0.9,13/6/2017 14:42 
0.1,1.2,-0.9,13/6/2017 14:42 
0.1,1.3,-0.9,13/6/2017 14:42 
0.1,1.3,-0.9,13/6/2017 14:42 

起初,我有什麼是這個TIME_STAMP下

timestamps = Data.Time_Stamp 
for i in timestamps: 
    dataobj = dt.datetime.strptime(i, "%d/%m/%Y %H:%M") #Time_Stamp datetime format - need set varibale to print 
    print (dataobj) #Prints the following output 

輸出

13/6/2017 14:42

13/6/2017 14:42

13/6/2017 14:42

13/6/2017 14:42

13/6/2017 14:42

根據上面的輸出,它將日期和時間放在一個列中,我希望日期位於不同的列中,並且時間位於另一列中。

13/6/2017 14:42 13/6/2017 14:42 

    13/6/2017 14:42 13/6/2017 14:42 

    13/6/2017 14:42 13/6/2017 14:42 

    13/6/2017 14:42 13/6/2017 14:42 

    13/6/2017 14:42 13/6/2017 14:42 

我嘗試下面的例子,從這個Splitting timestamp column into seperate date and time columns,但我不能得到類似的輸出。

import pandas as pd 
import csv 
import datetime as dt 

print (row) 

Data = pd.DataFrame.from_csv('csv_date.csv') 
print (Data) 

timestamps = Data.Time_Stamp 
for i in timestamps: 
    dataobj = datetime.strptime(i, "%d/%m/%Y %H:%M") 

df['new_date'] = [i.date() for i in Data['Time_Stamp']] 
df['new_time'] = [i.time() for i in Data['Time_Stamp']] 

錯誤我遇到:

AttributeError       Traceback (most recent call last) 
<ipython-input-137-ca9ed5c25ff2> in <module>() 
----> 1 df['new_date'] = [i.date() for i in Data['Time_Stamp']] 
     2 df['new_time'] = [i.time() for i in Data['Time_Stamp']] 

<ipython-input-137-ca9ed5c25ff2> in <listcomp>(.0) 
----> 1 df['new_date'] = [i.date() for i in Data['Time_Stamp']] 
     2 df['new_time'] = [i.time() for i in Data['Time_Stamp']] 

AttributeError: 'str' object has no attribute 'date' 

回答

1

讀取數據時,使用pd.read_csvparse_datesinfer_datetime_formatTrue

Data = pd.read_csv('csv_date.csv', parse_dates=['Time_Stamp'], infer_datetime_format=True) 

接下來,你可以只提取日期&時間:

Data['Date'] = Data.Time_Stamp.dt.date 
Data['Time'] = Data.Time_Stamp.dt.time 
+0

我試過使用你提供的例子,但我有這個錯誤:** TypeError:不能轉換類型類似datetimelike索引**以及** AttributeError:只能使用.dt訪問器與datetimelike值** –

+0

@SanctaIgnis請張貼您的一些輸入數據。 –

+0

我添加了我使用的日期時間的數據 –

0
Data = pd.DataFrame.from_csv('csv_date.csv') 
Data['new_times'] = Data['Time_Stamp'].apply(lambda x:datetime.strptime(x, "%d/%m/%Y %H:%M")) 

使用申請和lambda處理數據幀

+0

我想您所提供的上述例子。我遇到了這個錯誤**模塊'datetime'沒有屬性'strptime'**任何想法爲什麼? –

+0

datetime.datetime.strptime(),你可以使用pd.to_datetime()轉換列 –