Reverse-OneHotEncoding数组

时间:2019-05-11 13:05:10

标签: python pandas numpy

我当时使用LabelEncoderOneHotEncoder将分类数据更改为数值数据,但是由于我是机器学习的新手,所以我做了一些本不应该使用{{ 1}}。所以我想推翻我用OneHotEncoder做的事情。

我已经在Internet上进行了一些搜索,并尝试了OneHotEncoder,但是随着pd.get_dummies()将我的数据更改为9维,我得到了

  

例外:数据必须是一维的

错误,因此无效。

我还尝试根据搜索结果使用看起来像这样的代码来对列进行解码。

OneHotEncoder

即使我知道了

X_level = pd.DataFrame({'1':[1,0,0,0,0,0,0,0,0],'2':[0,1,0,0,0,0,0,0,0],'3':[0,0,1,0,0,0,0,0,0],'4':[0,0,0,1,0,0,0,0,0],'5':[0,0,0,0,1,0,0,0,0],'6':[0,0,0,0,0,1,0,0,0],'7':[0,0,0,0,0,0,1,0,0],'8':[0,0,0,0,0,0,0,1,0],'9':[0,0,0,0,0,0,0,0,1]})
def get_X_level(row):
    for c in X_level.columns:
        if row[c]==1:
            return c
X_level.apply(get_X_level, axis=1)

as out,我希望它在我的阵列上而不在我的外面。因此,这也无济于事。

我希望此结果在我的0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 dtype: object 数组上而不在我的Out上

1 个答案:

答案 0 :(得分:0)

X_level = pd.DataFrame({'1':[1,2,3,4,5,6,7,8,9]})
def get_X_level(row):
    for c in X_level.columns:
        if row [c]==1:
            return c

该代码帮助我解决了问题。