2016-06-05 4 views
1

Angesichts der folgenden Datenrahmen und notwendig Gerangel:Pandas Convert Timestamp-Spalte zu Datetime

import pandas as pd 
df=pd.DataFrame({'A':['a','b','c'], 
     'dates':['2015-08-31 00:00:00','2015-08-24 00:00:00','2015-08-25 00:00:00']}) 
df.dates=df.dates.astype(str) 
df['dates'] = pd.to_datetime(df.dates.str.split(',\s*').str[0]) 
set(df['dates']) 

ich am Ende mit:

{Timestamp('2015-08-24 00:00:00'), 
Timestamp('2015-08-25 00:00:00'), 
Timestamp('2015-08-31 00:00:00')} 

Ich brauche die Zeitstempel zurück in Datetime (wirklich zu konvertieren, nur Datum) Format.

Ich habe versucht, dies auf der Grundlage der Antwort auf this post:

df['dates'].to_pydatetime() 

Aber das gibt:

AttributeError: 'Series' object has no attribute 'to_pydatetime' 

In meinem realen Daten ist der Datentyp: <M8[ns]

Dank im Voraus!

+1

Mögliche Duplikat [Konvertieren zwischen Datetime und Pandas Timestamp Objekte] (http://stackoverflow.com/questions/22825349/converting-between-datetime-and-pandas- timestamp-objects) –

+0

Bitte beachten Sie den bearbeiteten Post. Ich habe versucht, die Methode in diesem Beitrag vorgeschlagen, aber es hat nicht funktioniert für mich. –

Antwort

1

Sie können dt.date verwenden, um eine datetime.date zurückzukehren Objekt:

In [3]: 
set(df['dates'].dt.date) 

Out[3]: 
{datetime.date(2015, 8, 24), 
datetime.date(2015, 8, 25), 
datetime.date(2015, 8, 31)} 
1

Wenn Sie nur das Datum scharf sind aus einem bestimmten Timestamp Objekt auf Extrahieren, können Sie die rohen datetime.date Objekte erhalten, indem das ungebundene Timestamp.date Methode aufrufen, wie gezeigt:

import pandas as pd 
from pandas import Timestamp, Series, date_range 

start = Timestamp('2016-01-01') 
stop = Timestamp('2016-01-02') 
s = Series(date_range(start, stop, freq = 'H')) 

print s[0] 
2016-01-01 00:00:00 

print s.map(Timestamp.date)[0] 
2016-01-01 
dtype: object