给定一个列表列表,其中每个子列表是一个装满字母的桶,例如:
L=[['a','c'],['b','e'],['d']]
我想将每个子列表编码为DataFrame中的一行,如下所示:

    a   b   c   d   e
0   1   0   1   0   0
1   0   1   0   0   1
2   0   0   0   1   0

假设这封信是从“A”到“E”的。我想知道如何完成这样一个函数。

最佳答案

您可以使用sklearn库:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

L = [['a', 'c'], ['b', 'e'], ['d']]

mlb = MultiLabelBinarizer()

res = pd.DataFrame(mlb.fit_transform(L),
                   columns=mlb.classes_)

print(res)

   a  b  c  d  e
0  1  0  1  0  0
1  0  1  0  0  1
2  0  0  0  1  0

09-25 19:58