首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python - One-hot-encode到单列

Python - One-hot-encode到单列
EN

Stack Overflow用户
提问于 2018-07-29 04:38:43
回答 2查看 252关注 0票数 1

我几乎没有使用python的经验,但我正在努力学习它。我有一个熊猫数据帧,里面有一些假人。我想将它们转换回一个单独的列,但我就是想不出一个方法。有什么方法可以做到这一点吗?

我有这个:

代码语言:javascript
复制
ID   var_1 var_2 var_3 var_4
231    1     0     0    0
220    0     1     0    0
303    0     0     1    0
324    0     0     0    1

我需要转换到它:

代码语言:javascript
复制
ID   var  
231    1   
220    2   
303    3    
324    4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-29 04:44:03

假设这些确实是一次热编码,那么沿着第一个轴使用np.argmax

代码语言:javascript
复制
pd.DataFrame({'ID' : df['ID'], 'var' : df.iloc[:, 1:].values.argmax(axis=1) + 1})

    ID  var
0  231    1
1  220    2
2  303    3
3  324    4

但是,如果"ID“是索引的一部分,请使用以下内容:

代码语言:javascript
复制
pd.DataFrame({'ID' : df.index, 'var' : df.values.argmax(axis=1)})
票数 1
EN

Stack Overflow用户

发布于 2018-07-29 04:44:46

尝试一些新的wide_to_long

代码语言:javascript
复制
s=pd.wide_to_long(df,['var'],i='ID',j='Var',sep='_')
s[s['var']==1].reset_index().drop('var',1)
Out[593]: 
    ID Var
0  231   1
1  220   2
2  303   3
3  324   4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51575089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档