Ошибка: недопустимое сокращение единицы: /, при попытке преобразовать дату в формате 02.10.2012 9:00:00 - PullRequest
1 голос
/ 02 июля 2019

Я использую pandas для преобразования столбца с датой и временем в секунды, используя следующий код:

df['date_time'] = pd.to_timedelta(df['date_time'])
df['date_time'] = df['date_time'].dt.total_seconds() 

Набор данных: enter image description here

Если я использую следующий код:

df['date_time'] = pd.to_datetime(df['date_time'], errors='coerce')
df['date_time'] = df['date_time'].dt.total_seconds()
print(df.head())

Тогда я получаю следующую ошибку:

AttributeError: 'DatetimeProperties' object has no attribute 'total_seconds'

Так же, как и в случае с dt.timestamp

Итак, мои запросыявляются:

  1. Нужно ли переводить время в секунды для тренировки модели?Если да, то как и если нет, то почему?

  2. Этот столбец связан с двумя другими столбцами с именами weather_m и weather_d , weather_m имеет 38разные типы записей, или, скажем, 38 разных категорий, из которых только одна будет верна за раз, а у weather_m - 11, но случай такой же, как и у weather_m.Так что я немного запутался, стоит ли разделить эти категориальные данные и объединить 49 новых столбцов в исходном наборе данных, добавив в них weather_m и weather_d для обучения модели или использовать LabelEncoder вместо pd.get_dummies?

1 Ответ

1 голос
/ 03 июля 2019
  1. Преобразование даты и времени в метку времени (длительность) не имеет смысла.Это имело бы смысл, только если вы хотите, чтобы продолжительность между данной отметкой времени и какой-либо другой контрольной датой.Тогда вы можете получить timedelta, просто используя -, чтобы получить разницу между двумя датами.Поскольку ваш столбец datetime является строкой, вам также необходимо сначала преобразовать его в datetime: df['date_time'] = pd.to_datetime(df['date_time'], format='%m/%d/%Y %H:%M').Тогда вы можете попробовать что-то вроде: ref_date = datetime.datetime(1970, 1, 1, 0, 0); df['secs_since_epoch'] = (df['date_time'] - ref_date).dt.total_seconds()

  2. Если различные категории полностью отличаются друг от друга (и, например, у них нет неявного упорядочивания), вам следует использоватьодна горячая кодировка да, замена оригинальных столбцов.Так как количество категорий невелико, это должно быть хорошо.(хотя это также зависит от того, что именно вы собираетесь использовать для этих данных. некоторые библиотеки могут быть в порядке с исходным категориальным столбцом и выполнять преобразование для вас неявно)

...