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)
Ответ 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)