擅长:python、mysql、java
<p><code>sklearn</code>库提供了一个没有显式循环的解决方案</p>
<pre><code>from sklearn.preprocessing import MultiLabelBinarizer
d = {'A': 0, 'C': 0, 'B': 1, 'E': 3, 'D': 1, 'G': 0, 'F': 0, 'I': 3, 'H': 3, 'J': 1}
mlb = MultiLabelBinarizer()
s = pd.DataFrame(list(d.items())).groupby(1)[0].apply(list).rename_axis(None)
res = pd.DataFrame(mlb.fit_transform(s), columns=mlb.classes_, index=s.index)\
.reindex(range(s.index.max()+1)).fillna(0).astype(int)
print(res)
A B C D E F G H I J
0 1 0 1 0 0 1 1 0 0 0
1 0 1 0 1 0 0 0 0 0 1
2 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 1 0 0 1 1 0
</code></pre>