Писпарк если выписка в ДФ - PullRequest
0 голосов
/ 10 мая 2018

Нужна помощь в выяснении, как это закодировать.У меня есть 2 фильтра, которые нужно проверить в Dataframe и назначить значения.

filters = "LIST_A in {0} AND LIST_B not in {1}".format(include_list,EXCLUDE_list) 

amount = "AND AMT_PD >= 10"

find_df = old_df.if(old_df.format(filters,amount)):
    old_df = old_df.withColumn("ID", F.lit('FOUND'))
            else:
                old_df = old_df.withColumn("ID", F.lit('NOT_FOUND'))

1 Ответ

0 голосов
/ 10 мая 2018

Не уверен, что это то, что вы действительно ожидаете, поскольку вы предоставили только пример, но не указали описание задачи:

if old_df.filter('{0} {1}'.format(filters, amount)).count() > 0:
  old_df = old_df.withColumn("ID", F.lit('FOUND'))
else:
  old_df = old_df.withColumn("ID", F.lit('NOT_FOUND'))

Пример выше добавит еще один столбец во фрейм данных со всеми теми же значениями, если хотя быодна запись, удовлетворяющая найденным условиям.

В качестве альтернативы, если вы хотите выполнить проверку для записи - запрос будет выглядеть следующим образом:

old_df = old_df.withColumn("ID",
                           when(
                               (col('LIST_A').isin(include_list))
                                & ~(col('LIST_B').isin(EXCLUDE_list))
                                & (col('AMT_PD') >= 10),
                               'FOUND'
                           ).otherwise('NOT_FOUND')

ID столбца будет рассчитандля каждой записи отдельно на основе значений в столбцах LIST_A, LIST_B и AMT_PD для этой конкретной строки.

...