Я пытаюсь создать максимальный столбец с этим кодом. Столбец суммы работает
сумма:
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: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions"
Мне кажется, это похоже на перезапись функции max каким-то другим пакетом. Пытаться:
import pyspark.sql.functions as f
А затем используйте ссылку f.max(...)
Эта опция -f.max()- получает максимальное значение одного столбца, но не работает с несколькими столбцами.
Наконец, это сработало с этим кодом, используя 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)] ) )
не могли бы вы поделиться ожидаемым вводом и выводом, который вы хотите