PySpark - ValueError: невозможно преобразовать столбец в bool - PullRequest
0 голосов
/ 03 апреля 2019

Итак, я видел это решение:

ValueError: Невозможно преобразовать столбец в bool

у которого есть решение, я думаю. Но я пытаюсь заставить его работать с моим фреймом данных и не могу понять, как это реализовать.

Мой оригинальный код:

if df2['DayOfWeek']>=6 : 
   df2['WeekendOrHol'] = 1

это дает мне ошибку:

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

Итак, основываясь на вышеуказанной ссылке, я попробовал:

from pyspark.sql.functions import when
when((df2['DayOfWeek']>=6),df2['WeekendOrHol'] = 1)   
when(df2['DayOfWeek']>=6,df2['WeekendOrHol'] = 1)

, но это неверно, так как выдает ошибку.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Чтобы обновить столбец на основе условия, вам нужно использовать when, например:

from pyspark.sql import functions as F

# update `WeekendOrHol` column, when `DayOfWeek` >= 6, 
# then set `WeekendOrHol` to 1 otherwise, set the value of `WeekendOrHol` to what it is now - or you could do something else. 
# If no otherwise is provided then the column values will be set to None
df2 = df2.withColumn('WeekendOrHol', 
                     F.when(
                        F.col('DayOfWeek') >= 6, F.lit(1)
                     ).otherwise(F.col('WeekendOrHol')
                   )

Надеюсь, это поможет, удачи!

0 голосов
/ 04 апреля 2019

Лучший ответ по запросу:

df2=df2.withColumn("WeekendOrHol", (df2["DayOfWeek"]>=6).cast("int"))

Это дубликат: это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...