如何从一个热编码列中获取一列中的所有标签?
How to get all labels in a column out of one hot encoded columns?
反转多标签数据的一次热编码。
我想将 20 多个热编码列转换为带有标签名称的列。
数据也是多标签的,在label这一栏,我希望能提到所有的标签。
来自这里:
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)。 returns 是 df 中列中包含最大值的列的值。在一个热编码列的情况下,它将 return 标签。
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)
反转多标签数据的一次热编码。 我想将 20 多个热编码列转换为带有标签名称的列。 数据也是多标签的,在label这一栏,我希望能提到所有的标签。
来自这里:
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)。 returns 是 df 中列中包含最大值的列的值。在一个热编码列的情况下,它将 return 标签。
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)