Анализ правил ассоциации Pyspark +: как перевести фрейм данных в формат, подходящий для частого анализа шаблонов? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь использовать pyspark для майнинга правил ассоциации.Допустим, мои данные имеют вид:

myItems=spark.createDataFrame([(1,'a'),
                               (1,'b'),
                               (1,'d'),
                               (1,'c'),
                               (2,'a'),
                               (2,'c'),],
                              ['id','item']) 

Но в соответствии с https://spark.apache.org/docs/2.2.0/ml-frequent-pattern-mining.html, формат должен быть:

df = spark.createDataFrame([(1, ['a', 'b', 'd','c']),
                            (2, ['a', 'c'])], 
                           ["id", "items"])

Поэтому мне нужно перенести мои данные из вертикального в горизонтальноеи длины для всех идентификаторов разные.

Может кто-нибудь помочь мне с тем, как перевести, или есть другой способ сделать это?

1 Ответ

1 голос
/ 08 апреля 2019

Пусть ваше первоначальное определение myItems будет действительным. collect_list будет полезно после того, как вы обычно group фрейм данных по идентификатору.

>>> myItems=spark.createDataFrame([(1,'a'),
...                                (1,'b'),
...                                (1,'d'),
...                                (1,'c'),
...                                (2,'a'),
...                                (2,'c'),],
...                               ['id','item'])
>>> from pyspark.sql.functions import collect_list
>>> myItems.groupBy(myItems.id).agg(collect_list('item')).show()
+---+------------------+
| id|collect_list(item)|
+---+------------------+
|  1|      [a, b, d, c]|
|  2|            [a, c]|
+---+------------------+
...