【发布时间】:2014-10-21 05:39:38
【问题描述】:
我正在研究用于机器学习的汽车评估数据集,数据集是这样的
buying,maint,doors,persons,lug_boot,safety,class
vhigh,vhigh,2,2,small,low,unacc
vhigh,vhigh,2,2,small,med,unacc
vhigh,vhigh,2,2,small,high,unacc
vhigh,vhigh,2,2,med,low,unacc
vhigh,vhigh,2,2,med,med,unacc
vhigh,vhigh,2,2,med,high,unacc
我想将这些字符串按列转换为唯一的枚举整数。我看到 pandas.factorize() 是要走的路,但它只适用于一列。我如何使用一个命令一次性分解数据帧。
我尝试了 lambda 函数,但它不起作用。
df.apply(lambda c:pd.factorize(c),axis=1)
输出:
0 ([0, 0, 1, 1, 2, 3, 4], [vhigh, 2, small, low,...
1 ([0, 0, 1, 1, 2, 3, 4], [vhigh, 2, small, med,...
2 ([0, 0, 1, 1, 2, 3, 4], [vhigh, 2, small, high...
3 ([0, 0, 1, 1, 2, 3, 4], [vhigh, 2, med, low, u...
4 ([0, 0, 1, 1, 2, 2, 3], [vhigh, 2, med, unacc])
5 ([0, 0, 1, 1, 2, 3, 4], [vhigh, 2, med, high, ...
我看到了编码值,但无法从上面的数组中提取出来
【问题讨论】:
-
你不想改用
df.apply(pd.factorize)吗?
标签: python pandas machine-learning scikit-learn