错误:无效的单位缩写:/ ,尝试转换日期格式为 2012/10/2 上午9:00:00 时发生

我正在使用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_mweather_d的列,其中weather_m有38种不同的条目,或者说38个不同的类别,其中一次只会有一个为真,而weather_d有11个,但情况与weather_m相同。所以我在这里有点困惑,是否应该拆分这些分类数据,并在原始数据集中合并49个新列,然后删除weather_m和weather_d来训练模型,还是使用LabelEncoder而不是pd.get_dummies?


回答:

  1. 将日期时间或时间戳转换为时间间隔(持续时间)没有意义。只有当你想计算给定时间戳与某个参考日期之间的持续时间时才有意义。你可以通过使用-来获取两个日期之间的差异来获得时间间隔。由于你的日期时间列是字符串,你还需要先将其转换为日期时间: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. 如果不同的类别完全不同(并且它们之间没有隐式的排序),那么你应该使用独热编码,是的,替换原始列。由于类别的数量较少,这应该没问题。(不过这也取决于你将在这个数据上运行什么。有些库可能对原始的分类列没问题,并且会为你隐式地进行转换)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注