Проблема с преобразованием даты и времени в Пандах - PullRequest
0 голосов
/ 04 января 2019

Вот воспроизведенный пример моей проблемы:

df = pd.DataFrame(["2018-01-13 17:25:54+0100",
    "2018-01-13 07:23:36+0100",
    "2018-01-13 08:15:48+0100"], columns=["date"])

print(type(datetime.strptime(df["date"][1], '%Y-%m-%d %H:%M:%S%z')))

print(type(pd.Series(df["date"].apply(lambda s: datetime.strptime(s, '%Y-%m-%d %H:%M:%S%z')))[1]))

Вывод:

класс 'datetime.datetime'

класс 'pandas._libs.tslibs.timestamps.Timestamp'

Как получить объект datetime.datetime с помощью функции apply (или аналогичной)?

1 Ответ

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

Использование методов Pandas для datetime операций

Как правило, избегайте модуля datetime из стандартной библиотеки при работе с фреймами данных Pandas. Вы должны хотеть использовать векторизованные операции, а должны полагаться на методы Pandas, использующие преимущества векторизации на основе NumPy:

df['date'] = pd.to_datetime(df['date'])

print(df['date'].dtype)
# datetime64[ns]

Но если вы настаиваете ...

Если вы хотите экспортировать в массив datetime.datetime значений для использования за пределами Pandas, вы можете использовать to_pydatetime:

py_date = df['date'].dt.to_pydatetime()
# array([datetime.datetime(2018, 1, 13, 16, 25, 54),
#        datetime.datetime(2018, 1, 13, 6, 23, 36),
#        datetime.datetime(2018, 1, 13, 7, 15, 48)], dtype=object)

Однако, когда вы используете Панд, это редко требуется.

...