我一个热编码了一些变量,经过一些计算,我想检索原始的一个。
我正在做的是:
我过滤一个热编码的列名(它们都以原始变量的名称开头,比如'mycol'

filter_col = [col for col in df if col.startswith('mycol')]


然后我可以简单地将列名乘以筛选的变量。
X_test[filter_col]*filter_col

然而,这会导致稀疏矩阵。如何从中创建单个变量?求和不起作用,因为空位被当作数字,这样做:sum(X_test[filter_col]*filter_col)我得到
TypeError: unsupported operand type(s) for +: 'int' and 'str'

对如何进行有什么建议吗?这是最好的方法吗?还是有一些函数在做我需要的事情?
根据要求,这里有一个例子,取自here
df= pd.DataFrame({
    'mycol':np.random.choice( ['panda','python','shark'], 10),
    })

df=pd.get_dummies(df)

最佳答案

IIUC,你可以使用DataFrame.idxmaxaxis=1。如有必要,您可以用str.replace替换伪前缀:

X_test[filter_col].idxmax(axis=1).str.replace('mycol_', '')

10-07 17:30