我几乎没有使用python的经验,但我正在努力学习它。我有一个熊猫数据帧,里面有一些假人。我想将它们转换回一个单独的列,但我就是想不出一个方法。有什么方法可以做到这一点吗?
我有这个:
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
发布于 2018-07-29 04:44:03
假设这些确实是一次热编码,那么沿着第一个轴使用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)})
发布于 2018-07-29 04:44:46
尝试一些新的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
https://stackoverflow.com/questions/51575089
复制相似问题