df = sqlContext.createDataFrame([(1, 'a'), (2, 'b'), (3, 'c')], ['ID', 'Text'])
categories = df.select('Text').distinct().rdd.flatMap(lambda x: x).collect()
exprs = [F.when(F.col('Text') == category, 1).otherwise(0).alias(category) for
    category in categories]
df.select('ID', *exprs).show()
Матрица pyspark с фиктивными переменными