在DataFrame中编码多个标签

时间:2018-10-09 09:59:50

标签: python python-3.x pandas list one-hot-encoding

给出一个列表列表,其中每个子列表都是一个充满字母的存储桶,例如:

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'。我想知道如何完成此功能。

1 个答案:

答案 0 :(得分:4)

您可以使用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