I have a dataframe like :
A B C
1 0 0
1 1 0
0 1 0
0 0 1
I want to have :
A B C lab
Or using melt and groupby
df1 = df.reset_index().melt('index')
df1 = df1[df1.value==1]
df['label'] = df1.groupby('index').variable.sum()
df
Out[976]:
A B C label
0 1 0 0 A
1 1 1 0 AB
2 0 1 0 B
3 0 0 1 C
Or
df['label'] = df.T.apply(lambda x: ''.join(x.index[x==1]),axis=0)
df
Out[984]:
A B C label
0 1 0 0 A
1 1 1 0 AB
2 0 1 0 B
3 0 0 1 C