错误:无效的单位缩写:/ ,尝试转换日期格式为 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

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

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