传入数据是 0+ 类别的列表:
#input data frame
df = pd.DataFrame({'categories':(list('ABC'), list('BC'), list('A'))})
categories
0 [A, B, C]
1 [B, C]
2 [A]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为一个 DataFrame,每个类别一列,每个单元格中有一个 0/1:
#desired output
A B C
0 1 1 1
1 0 1 1
2 1 0 0
Run Code Online (Sandbox Code Playgroud)
OneHotEncoder 和 LabelEncoder 会陷入困境,因为它们不处理单元格中的列表。当前通过嵌套循环实现了预期的结果for:
#get unique categories ['A','B','C']
categories = np.unique(np.concatenate(x['categories']))
#make empty data frame
binary_df = pd.DataFrame(columns=[c for c in categories],
index=x.index)
print(binary_df)
A B C
0 NaN NaN NaN
1 NaN NaN NaN …Run Code Online (Sandbox Code Playgroud)