gpt4 book ai didi

python - OHE 的一系列 list

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:17 25 4
gpt4 key购买 nike

我有如下所示的总 Pandas 系列列表。我有每个列表中可以包含的完整值列表。

    superset= ['a1','b1'...,'z1']

panda series ps = ['a1','b1']
['c1']
['d1']

现在我想将它们转换成下面的形式。

    columns : a1 b1 c1 d1 e1 ... z1
1 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0

最佳答案

使用MultiLabelBinarizer的解决方案:

s = pd.Series([['a1','b1'], ['c1'], ['d1']])

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(s),columns=mlb.classes_, index=s.index)

纯 Pandas 解决方案 get_dummies并聚合max:

df = pd.get_dummies(pd.DataFrame(s.values.tolist()), prefix='', prefix_sep='').max(axis=1, level=0)

print (df)
a1 b1 c1 d1
0 1 1 0 0
1 0 0 1 0
2 0 0 0 1

时间:

#Generated 10 paragraphs, 224 words, 1710 bytes of Lorem Ipsum
#https://www.lipsum.com/
L = [['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit'], ['sed', 'mollis', 'ligula', 'a', 'pellentesque', 'commodo'], ['morbi', 'convallis', 'ante', 'dignissim', 'leo', 'imperdiet', 'vitae', 'molestie', 'nulla', 'euismod'], ['ut', 'consequat', 'quam', 'ut', 'mauris', 'dictum', 'consequat'], ['pellentesque', 'id', 'odio', 'congue', 'vulputate', 'tortor', 'in', 'interdum', 'ex'], ['nam', 'cursus', 'lectus', 'vel', 'convallis', 'facilisis'], ['vivamus', 'sed', 'dui', 'pulvinar', 'dapibus', 'quam', 'in', 'posuere', 'velit'], ['donec', 'vitae', 'diam', 'at', 'mauris', 'eleifend', 'eleifend'], ['vestibulum', 'bibendum', 'erat', 'eget', 'massa', 'varius', 'accumsan'], ['donec', 'consequat', 'nibh', 'at', 'risus', 'elementum', 'quis', 'volutpat', 'purus', 'dapibus'], ['nulla', 'ornare', 'dolor', 'id', 'neque', 'malesuada', 'mattis'], ['nunc', 'a', 'lacus', 'vestibulum', 'laoreet', 'neque', 'a', 'maximus', 'velit'], ['etiam', 'nec', 'metus', 'eu', 'ligula', 'bibendum', 'malesuada'], ['morbi', 'vestibulum', 'ante', 'ac', 'nulla', 'efficitur', 'dignissim'], ['curabitur', 'maximus', 'velit', 'at', 'euismod', 'pellentesque'], ['nunc', 'non', 'turpis', 'pellentesque', 'aliquam', 'lectus', 'at', 'mollis', 'lectus'], ['donec', 'auctor', 'nunc', 'id', 'vestibulum', 'efficitur'], ['duis', 'volutpat', 'mi', 'vel', 'sem', 'cursus', 'commodo'], ['fusce', 'condimentum', 'eros', 'id', 'elementum', 'facilisis'], ['sed', 'lacinia', 'nunc', 'ac', 'risus', 'dignissim', 'condimentum'], ['maecenas', 'sit', 'amet', 'sem', 'vitae', 'ex', 'rhoncus', 'sodales'], ['nunc', 'ultrices', 'ligula', 'porttitor', 'bibendum', 'eleifend'], ['aenean', 'vitae', 'mauris', 'gravida', 'suscipit', 'ex', 'sed', 'molestie', 'tortor'], ['morbi', 'sed', 'ex', 'placerat', 'hendrerit', 'ipsum', 'id', 'pellentesque', 'metus'], ['praesent', 'interdum', 'orci', 'eu', 'mattis', 'efficitur'], ['cras', 'porttitor', 'ex', 'sit', 'amet', 'sollicitudin', 'suscipit'], ['suspendisse', 'non', 'dolor', 'et', 'nisi', 'aliquet', 'sagittis'], ['sed', 'finibus', 'turpis', 'sit', 'amet', 'aliquet', 'maximus'], ['nulla', 'ut', 'dolor', 'sed', 'odio', 'porta', 'porta'], ['morbi', 'dignissim', 'sapien', 'at', 'est', 'varius', 'lacinia'], ['quisque', 'elementum', 'sem', 'vel', 'purus', 'pulvinar', 'at', 'congue', 'lorem', 'fermentum'], ['curabitur', 'condimentum', 'libero', 'sed', 'mauris', 'porta', 'varius'], ['vivamus', 'vitae', 'nunc', 'quis', 'risus', 'cursus', 'luctus']]
s = pd.Series(L)
s = pd.concat([s] * 1000, ignore_index=True)
<小时/>
In [140]: %%timeit
...: pd.get_dummies(pd.DataFrame(s.values.tolist()), prefix='', prefix_sep='').max(axis=1, level=0)
...:
1 loop, best of 3: 282 ms per loop

In [141]: %%timeit
...: mlb = MultiLabelBinarizer()
...: pd.DataFrame(mlb.fit_transform(s),columns=mlb.classes_, index=s.index)
...:
10 loops, best of 3: 86.2 ms per loop

In [142]: %%timeit
...: df = pd.get_dummies(s.apply(pd.Series))
...: df = df.rename(columns={k: k.split('_')[1] for k in df}).sort_index(1)
...:
1 loop, best of 3: 5.97 s per loop

关于python - OHE 的一系列 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com