Pandas: Convert Timestamp to datetime.date
210,473
Solution 1
Use the .date
method:
In [11]: t = pd.Timestamp('2013-12-25 00:00:00')
In [12]: t.date()
Out[12]: datetime.date(2013, 12, 25)
In [13]: t.date() == datetime.date(2013, 12, 25)
Out[13]: True
To compare against a DatetimeIndex (i.e. an array of Timestamps), you'll want to do it the other way around:
In [21]: pd.Timestamp(datetime.date(2013, 12, 25))
Out[21]: Timestamp('2013-12-25 00:00:00')
In [22]: ts = pd.DatetimeIndex([t])
In [23]: ts == pd.Timestamp(datetime.date(2013, 12, 25))
Out[23]: array([ True], dtype=bool)
Solution 2
As of pandas 0.20.3, use .to_pydatetime()
to convert any pandas.DateTimeIndex
instances to Python datetime.datetime
.
Solution 3
You can convert a datetime.date object into a pandas Timestamp like this:
#!/usr/bin/env python3
# coding: utf-8
import pandas as pd
import datetime
# create a datetime data object
d_time = datetime.date(2010, 11, 12)
# create a pandas Timestamp object
t_stamp = pd.to_datetime('2010/11/12')
# cast `datetime_timestamp` as Timestamp object and compare
d_time2t_stamp = pd.to_datetime(d_time)
# print to double check
print(d_time)
print(t_stamp)
print(d_time2t_stamp)
# since the conversion succeds this prints `True`
print(d_time2t_stamp == t_stamp)
Solution 4
Assume time column is in timestamp integer msec format
1 day = 86400000 ms
Here you go:
day_divider = 86400000
df['time'] = df['time'].values.astype(dtype='datetime64[ms]') # for msec format
df['time'] = (df['time']/day_divider).values.astype(dtype='datetime64[D]') # for day format
Solution 5
So, got this from an IBM coursera tutorial.
data['date'] = data['TimeStamp'].apply(lambda d: datetime.date.fromtimestamp(d))
Related videos on Youtube
Author by
kilojoules
Updated on May 04, 2022Comments
-
kilojoules about 2 years
I have a pandas column of Timestamp data
In [27]: train["Original_Quote_Date"][6] Out[27]: Timestamp('2013-12-25 00:00:00')
How can check equivalence of these objects to
datetime.date
objects of the typedatetime.date(2013, 12, 25)
-
Andy Hayden over 8 yearsSee also the related question for datetime: stackoverflow.com/questions/13703720/…
-
-
Andy Hayden about 6 yearsWorth noting that for large DatetimeIndexs this can be slow / lot of memory. This is because a DatetimeIndex is basically just a light wrapper around an array of int64s, whilst an array of python datetimes is an array of fully-fledged python objects/not compactly laid out.
-
Den Thap over 4 yearsFor an entire column or series, just use this in conjunction with an apply method and lambda. For example, if t is a series of timestamps: t.apply(lambda x: x.date())
-
Mincong Huang about 4 yearsIt is worth to mention that the time part is lost and only date part is kept. For those who need to keep time, use
.to_pydatetime()
as mentioned by Xavier Ho. -
BallpointBen about 3 yearsThere is a corresponding
.time()
method that drops the date and returns just thedatetime.time
component