Я пытаюсь создать максимальный столбец с этим кодом. Столбец суммы работ

Просуммировать :

for col in list_names:
    for month in [3,6,9,12]:
        companies = companies.withColumn(col + 'sum_'+ str(month) + '_months', sum(companies[col + ult_pats2[month_ix - ix]] for ix in range(month)) )

Максимум:

for col in list_names:
    for month in [3,6,9,12]:
        companies = companies.withColumn(col + 'max_'+ str(month) + '_months', max(companies[col + ult_pats2[month_ix - ix]] for ix in range(month)) )

Сообщение об ошибке:

"ValueError: Невозможно преобразовать столбец в bool: используйте '&' для 'и', '|' для 'or', '~' для 'not' при построении логических выражений DataFrame "

0
ecan 29 Май 2019 в 13:57

2 ответа

Лучший ответ

Наконец, он работал с этим кодом, используя sf.greatest:

import pyspark.sql.functions as sf

for col in list_names:  
    for month  in [3,6,9,12]:
            companies = companies.withColumn('max_'+ col + str(month) + '_months',
                                             sf.greatest( *[sf.col(col + ult_pats2[month_ix - ix]) for ix in range(month)] ) )
0
ecan 21 Авг 2019 в 07:17

Это похоже на переписывание функции max другим пакетом. Пытаться:

import pyspark.sql.functions as f

А затем используйте ссылку f.max(...)

0
mrjoseph 29 Май 2019 в 17:45