Как стать автором
Обновить

Комментарии 4

Спасибо за статью. Вопрос по твоей тетрадке — df_features['first_issue_time'] = pd.to_datetime(df_features['first_issue_date']).astype(int) / 10 ** 9. Понимаю ты сначала данные в формат даты преобразовал, но что потом происходит??? Зачем в целочисленное значение переводить, делить на миллиард и каким образом это сработало у тебя?
Эти преобразования сделаны для приведения даты к unix time stamp — в таком формате признак уже можно использовать в моделях.
В результате приведения даты к целочисленному виду мы получаем число в наносекундах, отсюда и деление на миллиард.

Понятно. Тогда как происходит преобразование datetime в int??? Я как не пробовал не получилось как у тебя.
У меня сработало только когда произвел вычитание преобразованных данных в datetime. Получил timedelta. Затем их значения(values) разделил на 10**9 и преобразовал в int.
Вот так вышло:


df_features['first_issue_time'] = pd.to_datetime(df_features['first_issue_date'])
df_features['first_redeem_time'] = pd.to_datetime(df_features['first_redeem_date'])
df_features['issue_redeem_delay'] = df_features['first_redeem_time'] - df_features['first_issue_time']
df_features['issue_redeem_delay'] = (df_features['issue_redeem_delay'].values / 10 ** 9).astype(int)

Что я не так сделал?

Действительно, в более новых версиях pandas такой подход работать не будет. Дело в том, что столбец с датами содержит пропущенные значения и не может быть преобразован в целочисленный тип. Согласно документации pandas рекомендуется делать так:

(pd.to_datetime(df_features['first_issue_date']) - pd.Timestamp("1970-01-01")) // pd.Timedelta('1s')


Спасибо за замечание, поправлю. Так как такого планы вопросы не сильно относятся к теме публикации, то желательно задавать их в другом месте, например, в личку здесь или в слаке ODS.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий