2017-05-18 29 views
0

enter image description here如何分割日,月,日,時,分,秒列

我有日期時間的一長串.log文件,並想將它們拆分柱:年,月,日,小時,分鐘,秒,毫秒。以下是清單數據的一部分,我需要拆分:

2015-07-15 20:51:40 
2015-07-15 20:51:30 
2015-07-15 20:51:20 
2015-07-15 20:51:10 
2015-07-15 20:51:00 
2015-07-15 20:50:50 
2015-07-15 20:50:49 

但是,當我寫了下面的代碼,這表明和毫秒不會發生:

"AttributeError: 'list' object has no attribute 'read'"

只有一行的工作原理:

t2 int 2014 
t3 int 7 
t4 int 14 
t5 int 21 
t6 int 0 
t7 int 10 

預期輸出:

Day Month Year Hour Minute Second Millisecond 
15 07 2015 20 51 40 
15 07 2015 20 51 30 
15 07 2015 20 51 20 
15 07 2015 20 51 10 
15 07 2015 20 51 00 
15 07 2015 20 50 50 
15 07 2015 20 50 40 

這裏是代碼我使用:

from datetime import datetime 
from tkinter.filedialog import askopenfilename 
dirname=askopenfilename(initialdir='/.log', title= 'please select a directory') 
j=pd.read_csv(dirname, header=None, sep=r";") 
t1=j[j.columns[0]] 
for date_column in t1: 
    date_text = datetime.strptime(date_column, '%Y-%m-%d %H:%M:%S') 
    d = date_text 
    t2 = d.year 
    t3 = d.month 
    t4 = d.day 
    t5 = d.hour 
    t6 = d.minute 
    t7 = d.second 
    t8 = d.millisecond 
+0

非常感謝。我已經修好了。請檢查它是否正常。 – NguyenTram

+0

我調整了一行,請確認它是正確的。 –

回答

0

然後,我用大熊貓把它們分成DataFrame。

import datetime 
import pandas as pd 
from numpy import array 
from tkinter.filedialog import askopenfilename 
dirname=askopenfilename(initialdir='/.log', title= 'please select a directory') 
j=pd.read_csv(dirname, header=None, sep=r";") 
j.drop(j.index[[2]], inplace=True) 
cols = [1] 
j.drop(j.columns[cols],axis=1,inplace=True) 
t1=j[j.columns[0]] 
t1.drop(t1.index[[0,1]], inplace=True) 
for date_column in t1: 
    time_format = '%Y-%m-%d %H:%M:%S.%f' if '.' in date_column else '%Y-%m-%d %H:%M:%S' 
dff = pd.DataFrame(t1, columns = ['time']) 
dff['time'] = pd.to_datetime(dff['time']) 
t2 = dff['time'].dt.year.astype(str).tolist() 
t3 = dff['time'].dt.month.astype(str).tolist() 
t4 = dff['time'].dt.day.astype(str).tolist() 
t5 = dff['time'].dt.hour.astype(str).tolist() 
t6 = dff['time'].dt.minute.astype(str).tolist() 
t7 = dff['time'].dt.second.astype(str).tolist() 
t8 = dff['time'].dt.microsecond.astype(int) 
t9 = [int(x) for x in t8/1000] 
t99 = list(map(str, t9)) 
0

parser.parse()期待一個str,但你給它一個list。你需要像這樣的東西:

for date_column in t1: 
    date_text = parser.parse(date_column) 
    # do something with date_text 
+0

非常感謝。我試過了,我的代碼更好,但是分割的日期恰好發生在第一行。你能幫我分開整個專欄嗎?目前,代碼更改爲: for date_column in t1: d = parser.parse(date_column) t2 = d.year t3 = d.month t4 = d.day t5 = d.hour t6 = d.minute t7 = d.second – NguyenTram

相關問題