【发布时间】:2019-03-08 09:41:08
【问题描述】:
我有一个数据集,其中包含目前未编码的分类值。例如,我有一个名为 condition 的变量,它具有以下值:
Very Excellent、Excellent、Very Good
我想对这些进行编码(给它们整数值),以便我可以将它们用作回归中的分类虚拟变量。但是,我的数据框中有很多这些,所以我想遍历每一列并对所有 dtype 对象进行编码。 这是我的尝试:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
enc=LabelEncoder()
for column in df_06:
if df_06["column"].values==object:
df_06["column"]=enc.fit_transform(df_06["column"])
我的数据框是
错误:
<ipython-input-48-ea6aec86108f> in <module>()1 for column in df_06:----> 2 if df_06[column].values==object:3 df_06[column]=enc.fit_transform(df_06[column])ValueError: The truth value of an array with more than one element isambiguous. Use a.any() or a.all()
【问题讨论】:
-
有什么问题?它返回什么?
-
您是将它们编码为整数还是虚拟变量(又名 One-Hot-Encoding)?这是两种不同的技术。您给出的示例似乎是有序的,最好使用您自己的映射进行编码。例如
{'Very Good': 0, 'Excellent': 1, 'Very Excellent': 2}。LabelEncoder不保证正确的顺序 -
我想将它们编码为假人。什么是无需手动进行映射的快速方法?
-
in () 1 for column in df_06: ----> 2 if df_06[column].values==object: 3 df_06[column ]=enc.fit_transform(df_06[column]) ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
标签: python pandas loops scikit-learn encode