OneHotEncoding Error:TypeError:float()参数必须是字符串或数字,而不是'Timestamp'

时间:2019-12-12 04:49:01

标签: python scikit-learn

我要群集用户。 我收到TypeError:float()参数必须是字符串或数字,而不是'Timestamp'。 df就像FataFrame一样

id     | date                  | country       | code
1        2015-10-16T12:00:30     Japan            A
3        2017-08-20T15:50:44     America          B
4        2016-22-56T11:32:01     China            E 

csv是

1,2015-10-16T12:00:30,Japan,A
3,2017-08-20T15:50:44,America,B
4,2016-22-56T11:32:01,China,E

我写了代码

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import OneHotEncoder

df = pd.read_csv('data.csv')
df = pd.DataFrame(df)

df = df.values.tolist()
enc = OneHotEncoder()
enc.fit(df) 

我写了代码来做OneHotEncoding

enc = OneHotEncoder()
enc.fit(df) 

我不知道该如何解决。

1 个答案:

答案 0 :(得分:0)

Yo试图将“一键编码”应用于完整的数据帧,该数据帧还包括一个带有数据类型为TimeStamp(即DF中的日期)的功能列。一键编码只能在表示多个类别中的一个字符串值或一个数字值上进行,然后将此单列转换为表示每个类为一列的多维数组,如果该行属于该单元格则为1那个特定的班级。

注意,在数据类型TimeStamp中这是不可能的,因为日期/时间数据类型不表示任何形式的类。因此,改为将编码器配件行更改为仅包含“国家”和“代码”列。

enc_vals = enc.fit_transform(df[['country', 'code']].values)

这应该为您提供2D阵列。

此外,由于@ user1558604已在评论中提及,因此无需提及此行:

df = pd.DataFrame(df)

熊猫通过以下方式将您的CSV文件自动读取到DataFrame中:

df = pd.read_csv('data.csv')

谢谢