Pyspark: массив подмножеств на основе значения другого столбцаPython

Программы на Python
Ответить
Anonymous
 Pyspark: массив подмножеств на основе значения другого столбца

Сообщение Anonymous »

Я использую Pyspark в Azure Databricks для преобразования данных перед их отправкой в ​​приемник. В этом приемнике любой массив должен иметь длину не более 100. В моих данных у меня есть массив, длина которого всегда равна 300, и поле, указывающее, сколько из них имеют значение (

Код: Выделить всё

n_relevant
).

Код: Выделить всё

n_relevantЗначения 
могут быть:
  • ниже 100 -> тогда я хочу сохранить все значения
  • между 100 и 300 -> тогда я хочу выполнить подвыборку по модулю
  • выше 300 -> затем я хочу выполнить подвыборку по модулю 3
Например:

Код: Выделить всё

array: [1,2,3,4,5,...300]
n_relevant: 4
desired outcome: [1,2,3,4]

array: [1,2,3,4,5,...300]
n_relevant: 200
desired outcome: [1,3,5,...199]

array: [1,2,3,4,5,...300]
n_relevant: 300
desired outcome: [1,4,7,...298]

array: [1,2,3,4,5,...300]
n_relevant: 800
desired outcome: [1,4,7,...298]
Эта небольшая программа отражает желаемое поведение:

Код: Выделить всё

from math import ceil

def subsample(array:list,n_relevant:int)->list:
if n_relevant

Подробнее здесь: [url]https://stackoverflow.com/questions/79268222/pyspark-subset-array-based-on-other-column-value[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»