如何从一个热编码列中获得列中的所有标签?



多标签数据的反向热编码。我想将20+ 1个热编码列转换为具有标签名称的列。数据也是多标签的,在标签列中,我希望提到所有的标签。

从这个:

LabelA  labelB labelC 
0        0     1
1        1     0  

:

LabelA  labelB labelC   labels
0        0     1   ['labelC']
1        1     0   ['labelA','labelB']

您可以尝试使用df.idxmax(axis=1)。这将返回df中包含最大值的列的值。在只有一个热编码列的情况下,它将返回标签。

import pandas as pd
df = pd.DataFrame({'values':['val5','val2','val3']})
ohe_df = pd.get_dummies(df['values'])
# Select the One Hot Encoding Values
ohe_cols = ['val5','val2','val3']
result = ohe_df[ohe_cols].idxmax(axis=1)
result

这段代码将把所有的One Hot Encoded列标签转换成一个列,其中包含一个标签列表。

从这个:

LabelA  labelB labelC 
0        0     1
1        1     0  

:

LabelA  labelB labelC   labels
0        0     1   ['labelC']
1        1     0   ['labelA','labelB']

代码:

def get_col_name(row):    
b = (df.loc[row.name] == 1)
c = list(b.index[b])
return c
df['label'] = df.apply(get_col_name, axis=1)

相关内容

  • 没有找到相关文章

最新更新