создайте несколько меток в соответствии со значением другого столбца в фрейме данных Pyspark

#python #dataframe #pyspark #apache-spark-sql #multilabel-classification

Вопрос:

Я пытаюсь создать несколько меток на основе положительного среднего значения столбца задержки во фрейме данных pyspark и обозначить столбец задержки как 0, если значение ниже нуля, один, если значение находится между нулем и положительным средним, или 2 для оставшихся значений. Однако теперь я хотел получить среднее значение по месяцу, чтобы для разных месяцев у меня была разная метка 1, которая даст более точные метки для прогнозирования.

Я использую данные о задержках рейсов из функции kaggle, созданной только для проверки значения метки в одном столбце. Вместо этого он должен проверить значение месяца и задержки и определить среднее значение для маркировки.

 def autoLabelling(input_data,input_col,output_col):
    positive_dataset= input_data.filter(col(input_col)>0)
    mean = positive_dataset.agg({input_col: "mean"}).collect()[0][0]
    def labelling(num):
       if num <0:
            label =0
        elif num >0 and num <=mean:
            label=1
        else:
            label =2
    return label
labelling_udf= udf(labelling,IntegerType())
input_data = input_data.withColumn(output_col,labelling_udf(input_data[input_col]))
return input_data 
flightsDf.filter((col('ARRIVAL_DELAY')>0)).groupBy(col('MONTH')).agg({'ARRIVAL_DELAY': "mean"})
 

Формат фрейма данных
Исходный источник набора данных