2017-05-31 111 views
0

我有一個變量,它是一個Python對象,幷包含與記錄信息的日期和時間有關的信息。它是按以下格式從Python對象中提取日期

Date_time_Created 
2012-06-29 11:23:44.882 
2012-07-27 14:53:46.909 
2014-05-01 16:12:32.005 
2014-10-27 18:25:57.403 
2014-10-29 10:58:46.013 
2014-11-06 22:24:24.872 
2014-11-06 22:26:13.218 
2015-02-17 04:48:35.229 
2015-04-14 07:54:43.969 
2015-04-14 07:58:42.896 
2015-04-14 08:00:35.552 
2015-04-14 08:10:11.627 
2015-04-14 08:14:37.842 
2015-04-14 08:18:47.501 
2015-04-14 08:27:21.895 
2015-04-14 08:30:21.376 
2015-04-14 08:33:42.146 
2015-04-14 08:38:06.271 
2015-04-14 08:44:36.056 
2015-04-14 08:49:40.434 
2015-04-14 08:56:38.785 
2015-04-14 08:59:12.542 
2015-04-14 09:01:19.538 

我希望能夠從這個剛剛日期提取物(儘管知道怎麼辦的時候也將是有益的!)。

我曾嘗試以下用細繩

match = re.search(r'\d{4}-\d{2}-\d{2}', text) 
date = datetime.strptime(match.group(), '%Y-%m-%d').date() 

但是我處理的數據的數據類型是一個Python對象「應該」的工作。

任何想法?

在此先感謝!

回答

1

是不是隻是一個日期時間對象?

如果是這樣,你可以這麼像

dataobject.date # for year, month, day 
dataobject.time # for hour, min, sec, mill 

https://docs.python.org/2/library/datetime.html


如果您正在使用pandas庫,你可以嘗試這樣的東西來解析系列:

date = pd.to_datetime(data_object, format='%Y-%m-%d').dt.date 

http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.to_datetime.html

+0

使用,這是給我錯誤'AttributeError:'系列'對象具有沒有屬性'date'' – Taylrl

+0

你使用熊貓庫嗎? – criw

+0

我添加了一些東西,以防您在熊貓系列中工作 – criw

0

方法1: 你可以使用dateutilhttps://dateutil.readthedocs.io/en/stable/

import dateutil.parser 
yourdate = dateutil.parser.parse(datestring) 
如果你想手動這裏做

是你的代碼,你只要稍加修改: 進口重,日期時間 方法2:

text ="Date_time_Created 2012-06-29 11:23:44.882 2012-07-27 14:53:46.909 2014-05-01 16:12:32.005 2014-10-27 18:25:57.403 2014-10-29 10:58:46.013 2015-04-14 08:56:38.785 2015-04-14 08:59:12.542 2015-04-14 09:01:19.538" 

match = re.findall(r'\d{4}-\d{2}-\d{2}', text) 
for i in match: 
    date = datetime.datetime.strptime(i, '%Y-%m-%d').date() 
    print(date) 

如果用r代替了re.search e.finall,所以我列出了所有的日期和他們我解析它將它們轉換爲日期。你可以按照你的喜好來處理它。

+0

我添加了第二個解決方案,受您提供的代碼的影響。 不要忘了upvote和標記爲答案,如果我幫助,thnak你 –

+0

使用此我得到以下錯誤'TypeError:解析器必須是字符串或字符流,而不是系列'。這是否意味着我有一個系列而不是一個對象? – Taylrl

1

假設你的數據在your.csv文件:

from datetime import datetime 
with open('your.csv') as date_file: 
    next(date_file)  
    for line in date_file: 
     date_object = datetime.strptime(line.strip(),'%Y-%m-%d %H:%M:%S.%f') 
     print("date:%s, time:%s"%(date_object.date(),date_object.time())) 

輸出將是:

date:2012-06-29, time:11:23:44.882000 
date:2012-07-27, time:14:53:46.909000 
date:2014-05-01, time:16:12:32.005000 
date:2014-10-27, time:18:25:57.403000 
date:2014-10-29, time:10:58:46.013000 
date:2014-11-06, time:22:24:24.872000 
date:2014-11-06, time:22:26:13.218000 
date:2015-02-17, time:04:48:35.229000 
date:2015-04-14, time:07:54:43.969000 
date:2015-04-14, time:07:58:42.896000 
date:2015-04-14, time:08:00:35.552000 
date:2015-04-14, time:08:10:11.627000 
date:2015-04-14, time:08:14:37.842000 
date:2015-04-14, time:08:18:47.501000 
date:2015-04-14, time:08:27:21.895000 
date:2015-04-14, time:08:30:21.376000 
date:2015-04-14, time:08:33:42.146000 
date:2015-04-14, time:08:38:06.271000 
date:2015-04-14, time:08:44:36.056000 
date:2015-04-14, time:08:49:40.434000 
date:2015-04-14, time:08:56:38.785000 
date:2015-04-14, time:08:59:12.542000 
date:2015-04-14, time:09:01:19.538000 

更新: 大熊貓版本:

import pandas as pd 
df = pd.read_csv('your.csv') 
print pd.to_datetime(df['Date_time_Created']).dt.date # access the date 
print pd.to_datetime(df['Date_time_Created']).dt.time # access the time 
+0

感謝您的回覆。這個答案有錯誤,說'module'對象沒有屬性'strptime'' – Taylrl

+0

請添加'from datetime import datetime',檢查更新的答案 –