2017-03-25 9 views
1

「平日、月曜日、日、hh:mm:ss、年」を表す「Sun May 1 00:00:10 2016」という望ましくない文字列形式の日付の列があります。タイムスタンプ文字列をdatetime形式に変換する

pandas.to_datetimeまたはnumpyを使用してこれをどのようにフォーマットできますか?

ヘルプを評価してください!一般的に

import pandas as pd 

date = 'Sun May 1 00:00:10 2016' 
df = pd.DataFrame([date], columns=['date']) 
+2

df = pd.DataFrame([pd.to_datetime(date)]、columns = ['date']) – plasmon360

答えて

1

、タスクのこのタイプのためにあなたがdatetimeモジュールからstrptimeメソッドを使用する必要があります限りpandasに関しては

from datetime import datetime as dt 
s = 'Sun May 1 00:00:10 2016' 
f = '%a %B %d %H:%M:%S %Y' 
dt.strptime(s, f) 
datetime.datetime(2016, 5, 1, 0, 0, 10) 

df = pd.DataFrame({"date": 
        ['Sun May 1 00:00:10 2016','Sun May 2 00:00:10 2016']}) 
df 
date 
0 Sun May 1 00:00:10 2016 
1 Sun May 2 00:00:10 2016 


df.date.apply(lambda s: dt.strptime(s,f)) 
0 2016-05-01 00:00:10 
1 2016-05-02 00:00:10 
Name: date, dtype: datetime64[ns] 

EDIT

それはより完全にするために、あなたの質問にコメントしてuser1753919によって提案された方法が、この場合にも、「ただ働き」されています

pd.to_datetime(df.date) 
0 2016-05-01 00:00:10 
1 2016-05-02 00:00:10 
Name: date, dtype: datetime64[ns] 

しかし、タイミングの結果は参考になります。

%timeit df.date.apply(lambda s: dt.strptime(s,f)) 
%timeit pd.to_datetime(df.date) 
1000 loops, best of 3: 369 µs per loop 
1000 loops, best of 3: 771 µs per loop 
+0

ありがとうございました! – Jake

+1

あなたのタイミングの結果は完全に間違っています。より大きな数字で試してみてください – Jeff

関連する問題