2017-08-07 625 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()转换列 –