Python - 单热编码为单列

Python - One-hot-encode to single column

我对 python 几乎 为零 ,但我正在努力学习它。我有一个带有一些假人的 Pandas 数据框。我想将它们转换回单列,但我就是想不出办法。有什么办法吗?

我有这个:

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

我要转换成它:

ID   var  
231    1   
220    2   
303    3    
324    4

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

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" 是索引的一部分,请改用它:

pd.DataFrame({'ID' : df.index, 'var' : df.values.argmax(axis=1)})

尝试新事物wide_to_long

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