【发布时间】:2016-10-08 11:16:11
【问题描述】:
我有一个包含我所有功能和标签的 Pandas DataFrame。我的功能之一是分类的,需要单热编码。
特征是一个整数,只能有来自0 to 4的值
要将这些数组保存回我的 DataFrame 中,我使用以下代码
# enc is my OneHotEncoder object
df['mycol'] = df['mycol'].map(lambda x: enc.transform(x).toarray())
我的 DataFrame 有超过 100 万行,所以上面的代码需要一段时间。有没有更快的方法将数组分配给 DataFrame 单元格?因为我只有 5 个类别,所以我不需要调用 transform() 函数 100 万次。
我已经尝试过类似的东西
num_categories = 5
i = 0
while (i<num_categories):
df.loc[df['mycol'] == i, 'mycol'] = enc.transform(i).toarray()
i += 1
这会产生这个错误
ValueError: Must have equal len keys and value when setting with an ndarray
【问题讨论】:
-
试试
df['mycol'] = pd.factorize(df['mycol'])[0]
标签: python pandas machine-learning scikit-learn