Error: invalid unit abbreviation: / , while trying to convert date with a format of 10/2/2012 9:00:00 AM
Error: invalid unit abbreviation: / , while trying to convert date with a format of 10/2/2012 9:00:00 AM
我正在使用 pandas 通过使用以下代码将具有日期和时间的列转换为秒数:
df['date_time'] = pd.to_timedelta(df['date_time'])
df['date_time'] = df['date_time'].dt.total_seconds()
数据集是:
如果我使用下面的代码:
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
所以我的查询是:
是否需要将时间转换为秒来训练模型?如果是那么如何,如果不是那么为什么?
这个与另外两个名为 weather_m 和 weather_d 的列相关,weather_m 有 38 种不同类型的条目,或者我们说 38 个不同的类别,其中一次只有一个是正确的,而 weather_m 有 11 个,但情况与 weather_m 相同。所以我在这里有点困惑是拆分这个分类数据并合并原始数据集中的 49 个新列并删除 weather_m 和 weather_d 来训练模型还是使用 LabelEncoder 而不是 pd.get_dummies?
将日期时间或时间戳转换为时间增量(持续时间)没有意义。仅当您想要给定时间戳和其他参考日期之间的持续时间时才有意义。然后你可以通过使用 -
来获得 timedelta 来获得 2 个日期之间的差异。
由于您的日期时间列是一个字符串,您还需要先将其转换为日期时间: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()
如果不同的类别彼此完全不同(例如,它们没有隐式排序),那么您应该使用一种热编码是,替换原始列。由于类别数量很少,所以应该没问题。
(尽管这也取决于您要运行 对这些数据的确切理解。某些库可能对原始分类列没问题,并隐式地为您进行转换)
我正在使用 pandas 通过使用以下代码将具有日期和时间的列转换为秒数:
df['date_time'] = pd.to_timedelta(df['date_time'])
df['date_time'] = df['date_time'].dt.total_seconds()
数据集是:
如果我使用下面的代码:
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
所以我的查询是:
是否需要将时间转换为秒来训练模型?如果是那么如何,如果不是那么为什么?
这个与另外两个名为 weather_m 和 weather_d 的列相关,weather_m 有 38 种不同类型的条目,或者我们说 38 个不同的类别,其中一次只有一个是正确的,而 weather_m 有 11 个,但情况与 weather_m 相同。所以我在这里有点困惑是拆分这个分类数据并合并原始数据集中的 49 个新列并删除 weather_m 和 weather_d 来训练模型还是使用 LabelEncoder 而不是 pd.get_dummies?
将日期时间或时间戳转换为时间增量(持续时间)没有意义。仅当您想要给定时间戳和其他参考日期之间的持续时间时才有意义。然后你可以通过使用
-
来获得 timedelta 来获得 2 个日期之间的差异。 由于您的日期时间列是一个字符串,您还需要先将其转换为日期时间: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()
如果不同的类别彼此完全不同(例如,它们没有隐式排序),那么您应该使用一种热编码是,替换原始列。由于类别数量很少,所以应该没问题。 (尽管这也取决于您要运行 对这些数据的确切理解。某些库可能对原始分类列没问题,并隐式地为您进行转换)