web-dev-qa-db-ja.com

日時strptimein Python pandas:何が問題なのですか?

import datetime as datetime
datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')

を生成します

AttributeError Traceback(最後の最後の呼び出し)in()1 import datetime as datetime ----> 2 datetime.strptime( '2013-01-01 09:10:12'、 '%Y-%m-%d%H :%M:%S ')3 z = minidf [' Dates '] 4 z

AttributeError: 'モジュール'オブジェクトに属性 'strptime'がありません

私の目標は、フォーマットがまだデータオブジェクトであるpandasデータフレーム列を変換することです

import datetime as datetime
#datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
z = minidf['Dates']

0     2015-05-13 23:53:00
1     2015-05-13 23:53:00
2     2015-05-13 23:33:00
3     2015-05-13 23:30:00
4     2015-05-13 23:30:00
5     2015-05-13 23:30:00
6     2015-05-13 23:30:00
7     2015-05-13 23:30:00
8     2015-05-13 23:00:00
9     2015-05-13 23:00:00
10    2015-05-13 22:58:00
Name: Dates, dtype: object

ボーナスの質問は、より多くの列を持つより大きなファイルからpd.read_csv関数を使用してこの列を取得したことです。 pd.read_csvがこれをdtype: datetime64[ns]形式に直接変換するようなパラメーターを渡すことは可能ですか?

4
Fagui Curtain

変換に使用できると思います to_datetime

print pd.to_datetime('2013-01-01 09:10:12', format='%Y-%m-%d %H:%M:%S')
2013-01-01 09:10:12

print pd.to_datetime('2013-01-01 09:10:12')
2013-01-01 09:10:12

関数で変換する必要がある場合 read_csv 、パラメータを追加parse_dates

df = pd.read_csv('filename',  parse_dates=['Dates'])

サンプル:

import pandas as pd
import io

temp=u"""Dates
2015-05-13 23:53:00
2015-05-13 23:53:00
2015-05-13 23:33:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:30:00
2015-05-13 23:00:00
2015-05-13 23:00:00
2015-05-13 22:58:00
"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp),  parse_dates=['Dates'])
print df
                 Dates
0  2015-05-13 23:53:00
1  2015-05-13 23:53:00
2  2015-05-13 23:33:00
3  2015-05-13 23:30:00
4  2015-05-13 23:30:00
5  2015-05-13 23:30:00
6  2015-05-13 23:30:00
7  2015-05-13 23:30:00
8  2015-05-13 23:00:00
9  2015-05-13 23:00:00
10 2015-05-13 22:58:00

print df.dtypes
Dates    datetime64[ns]
dtype: object

to_datetime

print pd.to_datetime(df['Dates'])

サンプル:

print df
                  Dates
0   2015-05-13 23:53:00
1   2015-05-13 23:53:00
2   2015-05-13 23:33:00
3   2015-05-13 23:30:00
4   2015-05-13 23:30:00
5   2015-05-13 23:30:00
6   2015-05-13 23:30:00
7   2015-05-13 23:30:00
8   2015-05-13 23:00:00
9   2015-05-13 23:00:00
10  2015-05-13 22:58:00

print df.dtypes
Dates    object

df['Dates'] = pd.to_datetime(df['Dates'])
print df
                 Dates
0  2015-05-13 23:53:00
1  2015-05-13 23:53:00
2  2015-05-13 23:33:00
3  2015-05-13 23:30:00
4  2015-05-13 23:30:00
5  2015-05-13 23:30:00
6  2015-05-13 23:30:00
7  2015-05-13 23:30:00
8  2015-05-13 23:00:00
9  2015-05-13 23:00:00
10 2015-05-13 22:58:00

print df.dtypes
Dates    datetime64[ns]
dtype: object
11
jezrael

AttributeError: 'モジュール'オブジェクトに属性 'strptime'がありません

strptimedatetimeでは利用できませんがdatetime.datetime

>>> from datetime import datetime
>>> datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2013, 1, 1, 9, 10, 12)
5
AKS

モジュールのみをインポートする

>>> import datetime
>>> datetime.datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2013, 1, 1, 9, 10, 12)

モジュールから現在のコンテキストへのクラスのインポート:

>>> from datetime import datetime
>>> datetime.strptime('2013-01-01 09:10:12', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2013, 1, 1, 9, 10, 12)
>>> 
0
riteshtch