Pandas Convert Timestamp Column to Datetime

2019-01-29 06:59发布

问题:

Given the following data frame and necessary wrangling:

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

I end up with:

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

I need to convert the time stamps back to datetime (really, just date) format.

I've tried this based on the answer to this post:

df['dates'].to_pydatetime()

But that returns:

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

In my real data, the data type is: <M8[ns]

Thanks in advance!

回答1:

You can use dt.date to return a datetime.date object:

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

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


回答2:

If you are keen on extracting only the date from a given Timestamp object, you can get the raw datetime.date objects by calling the unbound Timestamp.date method as shown:

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