0

我正在尝试对 Dataframe 的特定列进行 LabelEncode。我已将这些列名存储在列表中(cat_features)。现在我想使用一个 For 循环来遍历这个列表的元素(它们是字符串)并使用这些元素来访问数据框的列。但它说

TypeError: argument must be a string or number

由于我正在访问已经是字符串的列表元素。所以我不明白为什么它会抛出那个错误。请帮助我理解为什么它不起作用以及我能做些什么来使它起作用。

cat_features = [x for x in features if x not in features_to_scale]

from sklearn.preprocessing import LabelEncoder

for feature in cat_features:
    le = LabelEncoder()
    dataframe[feature] = le.fit_transform(dataframe[feature])    
4

1 回答 1

0

该错误意味着您的一个或多个列包含列表/元组/集或类似内容。为此,您需要先将列表/元组转换为字符串,然后才能应用标签编码器

此外,您可以先根据需要的功能过滤数据框,然后使用应用功能,而不是循环 -

df = main_df[cat_features]
df = df.astype(str)     #This step changes each column to string as label encoder cant work on lists/tuples/sets

lb = LabelEncoder()
df.apply(lb.fit_transform)

稍后您可以将此数据框与剩余的连续特征结合起来。

于 2020-07-29T13:26:57.213 回答