У меня есть фрейм данных с именами столбцов:
DF1:
+------------+
| colsNames|
+------------+
|col1 |
|col2 |
|col3 |
+------------+
И фрейм данных с массивами значений:
DF2:
+------------+
| set|
+------------+
|[11, 20] |
|[1] |
|[10, 17, 54]|
+------------+
И, наконец, еще один фрейм данных, как правило, с большими массивами, чем DF2с числами:
DF3:
+--------------------+
| origin |
+--------------------+
|[11, 17, 1, 2, 3] |
|[1, 17, 54, 66, 1] |
|[11, 20, 10, 20] |
+--------------------+
Каждая строка DF2 сравнивается со всеми значениями происхождения столбца в DF3 и создает столбцы с общими совпадениями между всеми элементами.Результат будет выглядеть следующим образом:
resultDF:
+--------------------+------------+------------+------------+
| origin | col1| col2| col3|
+--------------------+------------+------------+------------+
|[11, 17, 1, 2, 3] | 1| 1| 1|
|[1, 17, 54, 66, 1] | 0| 2| 2|
|[11, 20, 10, 20] | 3| 0| 1|
+--------------------+------------+------------+------------+
Пояснение к первой строке этого результатаDF (остальные одинаковые):
- сравнить [11,20] с [11, 17, 1, 2, 3] с результатом 1 (только один раз появляется число 11)
- сравнить [11,20] с [1, 17, 54, 66, 1] с результатом 0
- сравнить [11,20] с [11, 20, 10, 20] с результатом 3 (два раза появляется число 20 и только один раз число 11).
- По порядку строк мы добавляем столбец сЗначения DF1 с предыдущими результатами.DF1 и DF2 имеют одинаковые номера строк.