相关疑难解决方法(0)

Pandas 列表的列以分隔列

问题

传入数据是 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)

python encoding numpy scikit-learn

2
推荐指数
1
解决办法
1551
查看次数

标签 统计

encoding ×1

numpy ×1

python ×1

scikit-learn ×1