Использование PySpark.
Follow : я думаю, что мне нужно только знать, как выбрать n
элементы после элемента в списке, и соединить их с самим списком.
Например, у вас есть список «a», «b», «c», «d», «e», «f», «g»
+-------+-----+
| _index| item|
+-------+-----+
| 0 | a |
| 1 | b |
| 2 | c |
| 3 | d |
| 4 | e |
| 5 | f |
| 6 | g |
+-------+-----+
с индексом от 0 до 6;и мы хотим объединить, скажем, n=3
элементы после 'c', с самим списком, и мы получим
+--------+-------+-------+
| _index | item1 | item2 |
+--------+-------+-------+
| 3 | d | d |
| 4 | e | e |
| 5 | f | f |
+--------+-------+-------+
Ниже приведен фрагмент связанного кода. Можно ли изменить этот код, чтобы выбрать элементы после A
на расстоянии n
и объединить их со списком, который содержит A
?Я новичок в искре, я хотел бы помочь!Спасибо!
Предположим, у нас много списков.Сначала мы находим элемент в этих списках с некоторым условием condition1
.Дайте ему псевдоним A
.
Если мы случайно выберем другой элемент после индекса A
(в пределах определенного расстояния индекса, скажем, 1-3
), а затем соединим его со списком, который содержит A
, тогда мы можем сделать следующее.
df.where(
(col('condition1')==0) # finds an element satisfying some condition, name it as 'A'
).alias('A').join(
df.alias('B'),
# randomly pick another element after 'A' within index distance 1 to 3
# and join it with the list that contains 'A'
((col('A.ListId')==col('B.ListId')) & (random.randint(1,4)+col('A._index'))==col('B._index'))
)