从项目集列表中获取更具可扩展性的方法是什么::
itemset = [['a', 'b'],
['b', 'c', 'd'],
['a', 'c', 'd', 'e'],
['d'],
['a', 'b', 'c'],
['a', 'b', 'c', 'd']]
对于这种类型的数据框::
>>> df
a b c d e
0 1 1 0 0 0
1 0 1 1 1 0
2 1 0 1 1 1
3 0 0 0 1 0
4 1 1 1 0 0
5 1 1 1 1 0
>>>
df 的目标大小是 1e6 行和 500 列。
您可以使用get_dummies http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html:
print (pd.DataFrame(itemset))
0 1 2 3
0 a b None None
1 b c d None
2 a c d e
3 d None None None
4 a b c None
5 a b c d
df1 = (pd.get_dummies(pd.DataFrame(itemset), prefix='', prefix_sep='' ))
print (df1)
a b d b c c d d e
0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
1 0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0
2 1.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0
3 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
4 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0
5 1.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0
print (df1.groupby(df1.columns, axis=1).sum().astype(int))
a b c d e
0 1 1 0 0 0
1 0 1 1 1 0
2 1 0 1 1 1
3 0 0 0 1 0
4 1 1 1 0 0
5 1 1 1 1 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)