Strptime Python, дающий int вместо объекта datetime в рамках датафрейма - PullRequest
0 голосов
/ 16 октября 2019

У меня есть датафрейм, взятый из таблицы Excel, я пытаюсь добавить код для преобразования строковых дат в дату-время, когда они автоматически не выбираются как дата-время. Есть 2 строки в строке '27 / 06/2019 '

df.loc[df['Start Date'].apply(lambda x: isinstance(x, str)), 'Start Date'] =

Затем я попробовал следующее:

df.loc[df['Start Date'].apply(lambda x: isinstance(x, str)), 'Start Date'].apply(lambda y: datetime.strptime(y, "%d/%m/%Y"))

и я получаю 1561593600000000000

Когда я пытаюсь преобразовать дату и время в дату, поставив в конце .date (), например:

df.loc[df['Start Date'].apply(lambda x: isinstance(x, str)), 'Start Date'].apply(lambda y: datetime.strptime(y, "%d/%m/%Y").date())

Это работает, но я получаю только объект даты, а не datetime.

Я пытался использовать datetime.combine с time.min и все еще та же проблема.

Есть идеи?

1 Ответ

0 голосов
/ 16 октября 2019

Я думаю, что лучше здесь использовать to_datetime:

df['Start Date'] = pd.to_datetime(df['Start Date'], dayfirst=True)

Или:

df['Start Date'] = pd.to_datetime(df['Start Date'], format="%d/%m/%Y")

В вашем решении удалить .date():

mask = df['Start Date'].apply(lambda x: isinstance(x, str))
df.loc[mask, 'Start Date'].apply(lambda y: datetime.strptime(y, "%d/%m/%Y"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...