Pandas: преобразовать метку времени в datetime.date

У меня есть столбец pandas данных Timestamp

In [27]: train["Original_Quote_Date"][6] 
Out[27]: Timestamp('2013-12-25 00:00:00')

Как проверить эквивалентность этих объектов объектам datetime.date типа

datetime.date(2013, 12, 25)

Ответы

Ответ 1

Используйте метод .date:

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

Чтобы сравнить с DatetimeIndex (т.е. массив временных меток), вы захотите сделать это наоборот:

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)

Ответ 2

По pandas 0.20.3 используйте .to_pydatetime() для преобразования любых экземпляров pandas.DateTimeIndex в Python datetime.datetime.

Ответ 3

Вы можете преобразовать объект datetime.date в pandas Timestamp следующим образом:

#!/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)