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

produziertDatetime strptime in Python Pandas: Was ist los?

AttributeError Traceback (most recent call last) 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: 'module' object has no attribute 'strptime'

mein Ziel ist es, eine Pandas Datenrahmen Spalte, deren Format nach wie vor ein Datenobjekt

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 

die Bonus-Frage ist, ich habe diese Spalte pd.read_csv Funktion von a zu konvertieren größere Datei mit mehr Spalten. Ist es möglich, Parameter zu übergeben, so dass pd.read_csv direkt das zu dtype: datetime64[ns] Format konvertiert

+0

Verwendung 'datetime.datetime.strptime ('2013-01-01 09.10.12',‚% Y-% m-% d% H:% M:% S ') um die 'datetime' Klasse innerhalb des' datetime'-Moduls zu beziehen – ritesht93

Antwort

4

Ich glaube, Sie to_datetime zur Umwandlung verwenden können:

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 

Wenn Sie konvertieren müssen in Funktion read_csv, fügen Sie Parameter parse_dates:

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

Probe:

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 

Eine andere Lösung mit to_datetime:

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

Probe:

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 
5

AttributeError: 'module' object has no attribute 'strptime'

strptime auf datetime nicht verfügbar ist, aber auf 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) 
0

i mporting nur das Modul

>>> 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) 

die Klasse aus dem Modul in aktuellen Kontext importieren:

>>> 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) 
>>>