这类似于reversing one-hot encoding,但是我有多个可能被标记的列。
我有这个:
|col1|col2|
|1 |0 |
|0 |1 |
|1 |1 |
我想要这个:
|col1|col2|new |
|1 |0 |'col1' |
|0 |1 |'col2' |
|1 |1 |'col1_col2'|
这是我尝试过的:
df.idxmax(axis=1)
它仅返回第一个实例,而不会捕获具有多个1
的行
def get_cat(row):
temp = []
for c in df[codes].columns:
if row[c]==1:
return c
这做同样的事情:它仅返回第一列名称,并且漏掉具有1
的多列的行。
答案 0 :(得分:1)
使用此
close
def get_cat(row):
temp = [a for a, b in row.items() if b == 1]
return '_'.join(temp)
是row
。