2017-05-31 23 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 

です。

私は私が働いているデータのデータ型がPythonオブジェクトですが、文字列

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

でその「はず」の作品次試してみました。

アイデア?

ありがとうございます!

答えて

1

datetimeオブジェクトではありませんか?

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

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

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


のようなもの、あなたがpandasライブラリを使用している場合は、あなたはシリーズを解析するために、このような何かを試みることができる

もしそうなら、あなたは可能性があり

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

+0

が、これは私を与えている使い方エラー 'AttributeError:' Series 'オブジェクトには'日付'の属性はありません – Taylrl

+0

あなたはpandasライブラリを使用していますか? – criw

+0

パンダシリーズで作業している場合に追加しました – criw

0

方法1: あなたがここにそれを手動で行いたい場合は、 dateutilライブラリhttps://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) 

re.searchをrに置き換えた場合はe.finall、すべての日付のリストを取得し、日付に変換するために解析します。あなたは好きなようにそれを処理することができます。

+0

提供したコードの影響を受ける第2のソリューションを追加しました。 私が助けてくれたら、答えとしてupvoteとマークすることを忘れないでください。 –

+0

これを使うと、次のエラーが出ます。TypeError:ParserはSeriesではなく文字列か文字ストリームでなければなりません。これは私がシリーズであり、オブジェクトではないということですか? – 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

ご回答ありがとうございます。この答えでエラーが発生しました。「モジュール」オブジェクトには属性「strptime」がありません。 – Taylrl

+0

'from datetime import datetime'を追加して、更新された答えをチェックしてください –

関連する問題