2017-05-11 8 views
0

Ich möchte DATE_H_REAL teilen und zwei Spalten erstellen. eine für Datum und eine Stunde, ich benutze diese:Wie Sie Datum und Uhrzeit teilen und separate Spalten erstellen

from datetime import datetime 
df_picru = datetime.strptime(df_picru['DATE_H_REAL'], '%Y-%m-%d %H:%M:%S') 
df_picru['day'] = df_picru.strftime('%Y-%m-%d') 
df_picru['hour'] = df_picru.strftime('%H:%M:%S') 

Aussehen Meine Daten wie diese

0      NaN 
1      NaN 
2      NaN 
3  02/02/2016 16:16 
4  02/02/2016 16:17 
5  02/02/2016 16:18 
+0

Was ist der Fehler, den Sie bekommen? – mtkilic

+0

strptime() Argument 1 muss str sein, nicht Serie –

Antwort

1

In Pandas to_datetime + Series.dt.strftime müssen - wenn Bedarf Ausgabe als strings:

df_picru = pd.DataFrame({'DATE_H_REAL':['02/02/2016 16:16', 
             '02/02/2016 16:17', np.nan]}) 

df_picru['DATE_H_REAL'] = pd.to_datetime(df_picru['DATE_H_REAL']) 
df_picru['day'] = df_picru['DATE_H_REAL'].dt.strftime('%Y-%m-%d') 
df_picru['hour'] = df_picru['DATE_H_REAL'].dt.strftime('%H:%M:%S') 
print (df_picru) 
      DATE_H_REAL   day  hour 
0 2016-02-02 16:16:00 2016-02-02 16:16:00 
1 2016-02-02 16:17:00 2016-02-02 16:17:00 
2     NaT   NaT  NaT 

print (type(df_picru.loc[0, 'day'])) 
<class 'str'> 

print (type(df_picru.loc[0, 'hour'])) 
<class 'str'> 

print (df_picru['DATE_H_REAL'].dtypes) 
datetime64[ns] 

Oder Series.dt.date + Series.dt.time bei Bedarf Ausgabe python date und python time:

df_picru['DATE_H_REAL'] = pd.to_datetime(df_picru['DATE_H_REAL']) 
df_picru['day'] = df_picru['DATE_H_REAL'].dt.date 
df_picru['hour'] = df_picru['DATE_H_REAL'].dt.time 
print (df_picru) 
      DATE_H_REAL   day  hour 
0 2016-02-02 16:16:00 2016-02-02 16:16:00 
1 2016-02-02 16:17:00 2016-02-02 16:17:00 
2     NaT   NaN  NaN 

print (type(df_picru.loc[0, 'day'])) 
<class 'datetime.date'> 

print (type(df_picru.loc[0, 'hour'])) 
<class 'datetime.time'> 

print (df_picru['DATE_H_REAL'].dtypes) 
datetime64[ns]