Pandas Timestamp to datetime.datetime()

Viewed 2624

I have a dataframe with a Timestamp column. I want to convert it to datetime.datetime format. This is what I have tried:

import pandas as pd

ts = pd.Timestamp('2019-01-01 00:00:00', tz=None)
df = pd.DataFrame({"myDate": [ts]})

df["myDate"] = df["myDate"].dt.to_pydatetime()
myList = df["myDate"].dt.to_pydatetime()

print(df.dtypes)
print(type(myList[0]))

The first print() returns a Timestamp (unexpected) The second print() returns datetime (expected) How do I make this dataframe re-assignment persist?

* Edit: What I am trying to achieve * To compare Timestamps in the dataframe with datetimes in a list, as follows:

ts = pd.Timestamp('2019-01-01 00:00:00', tz=None)
df = pd.DataFrame({"my_date": [ts]})
df_set = set(df["my_date"].values)
dt_set = set([datetime(2019, 1, 1, 0, 0, 0)])
print(dt_set - df_set)

returns: {datetime.datetime(2019, 1, 1, 0, 0)}. Should be empty set.

1 Answers

You can use pd.DatetimeIndex and its difference method. In general, using set with Pandas / NumPy objects is inefficient. Related: Pandas pd.Series.isin performance with set versus array.

from datetime import datetime

df = pd.DataFrame({"my_date": [pd.Timestamp('2019-01-01 00:00:00', tz=None),
                               pd.Timestamp('2019-01-10 00:00:00', tz=None)]})

datetime_list = [datetime(2019, 1, 1, 0, 0, 0)]

diff = pd.DatetimeIndex(df['my_date']).difference(pd.DatetimeIndex(datetime_list))

# DatetimeIndex(['2019-01-10'], dtype='datetime64[ns]', freq=None)
Related