Pandas Timestamp для datetime.datetime () - PullRequest
0 голосов
/ 14 января 2019

У меня есть фрейм данных со столбцом Timestamp. Я хочу преобразовать его в формат datetime.datetime. Вот что я попробовал:

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

Первая функция print () возвращает метку времени (неожиданно) Второй print () возвращает datetime (ожидаемый) Как сделать так, чтобы переназначение этого кадра данных сохранялось?

* Редактировать: чего я пытаюсь достичь * Чтобы сравнить метки времени в кадре данных с датами в списке, выполните следующие действия:

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)

возвращает: {datetime.datetime (2019, 1, 1, 0, 0)}. Должен быть пустой набор.

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать pd.DatetimeIndex и метод difference. В общем, использование set с объектами Pandas / NumPy неэффективно. Связано: Производительность Pandas pd.Series.isin с набором по сравнению с массивом .

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...