我有一个熊猫系列,目前看起来像这样:
14 [Yellow, Pizza, Restaurants]
...
160920 [Automotive, Auto Parts & Supplies]
160921 [Lighting Fixtures & Equipment, Home Services]
160922 [Food, Pizza, Candy Stores]
160923 [Hair Removal, Nail Salons, Beauty & Spas]
160924 [Hair Removal, Nail Salons, Beauty & Spas]
我希望从根本上将其重塑为一个看起来像这样的数据框......
Yellow Automotive Pizza
14 1 0 1
…
160920 0 1 0
160921 0 0 0
160922 0 0 1
160923 0 0 0
160924 0 0 0
即。一个逻辑结构,指出每个观察(行)属于哪些类别。
我能够编写基于循环的代码来解决这个问题,但考虑到我需要处理大量的行,这将会非常慢。
有没有人知道这种问题的矢量化解决方案?我会非常感激。
编辑:有509个类别,我有一个列表。
答案 0 :(得分:30)
In [9]: s = Series([list('ABC'),list('DEF'),list('ABEF')])
In [10]: s
Out[10]:
0 [A, B, C]
1 [D, E, F]
2 [A, B, E, F]
dtype: object
In [11]: s.apply(lambda x: Series(1,index=x)).fillna(0)
Out[11]:
A B C D E F
0 1 1 1 0 0 0
1 0 0 0 1 1 1
2 1 1 0 0 1 1