错误:无效的单位缩写:/ ,尝试转换日期格式为 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-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

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