使用包含特定值的其他列的名称的字符串将列添加到数据框

时间:2019-06-17 22:51:55

标签: python pandas

这类似于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的多列的行。

1 个答案:

答案 0 :(得分:1)

使用此

close

def get_cat(row): temp = [a for a, b in row.items() if b == 1] return '_'.join(temp) row