Я создаю поле с именем v1 в предыдущем запросе. Затем я пытаюсь создать новое производное поле из него.
Один метод работает, другой - нет. Я не понимаю, я ожидал, что они эквивалентны.
Это работает:
df = df.withColumn("outcome",expr("case when v1 = 0 then 1 when v1 > 0 then 2 else 0 end"))
Это не удается:
df = df.withColumn("outcome", F.when(F.col("v1") == 0, 1)
.F.when(F.col("v1") >0, 2)
.otherwise(0))
с ошибкой:
Py4JJavaError: An error occurred while calling o520.when.
: java.lang.IllegalArgumentException: when() can only be applied on a Column previously generated by when() function