grouped = df.groupby('pageid').category.apply(lambda lst: tuple((k, 1) for
    k in lst))
category_dicts = [dict(tuples) for tuples in grouped]
v = sklearn.feature_extraction.DictVectorizer(sparse=False)
X = v.fit_transform(category_dicts)
pd.DataFrame(X, columns=v.get_feature_names(), index=grouped.index)
Создайте манекены из столбца с несколькими значениями в пандах