Я новичок в PySpark и в настоящее время сталкиваюсь с проблемой следующей проблемы.
У меня есть искра df
следующим образом
DeviceID max(A) max(B) max(INUT)
0023002 2.5 3.7 8.1
0023045 2.2 1.3 11.3
0023008 4.7 2.3 1.9
Как я хочу добавить другой столбец как «Статус», где значения будут основаны на следующей логике.
if 0.20 * max(INUT) > max(max(A),max(B)) then Status = 'Imbalance' else 'Balance'
Ожидается, что приведенная выше логика создаст следующий кадр данных.
DeviceID max(A) max(B) max(INUT) Status
0023002 2.5 3.7 8.1 'Balance'
0023045 2.2 1.3 11.3 'ImBalance'
0023008 4.7 2.3 1.9 'Balance'
Теперь для достижения вышеуказанного df
ниже приведен код, который я использую
from pyspark.sql.function import col
import pyspark.sql.function as F
df_final = df.withColumn(
'Status',
F.when(col('max(INUT)')*0.20 > F.greatest(col('max(A)'),col('max(B)'),
'Imbalance')\
.otherwise('Balance')
Приведенный выше фрагмент кода выдает ошибку как
AttributeError: 'tuple' object has no attribute 'otherwise'
Где я пропускаю? Любые советы будут оценены.