无法将列转换为bool

时间:2018-05-23 19:58:46

标签: apache-spark pyspark apache-spark-sql

我正在尝试使用when更新PySpark Dataframe中的列。我正在使用数组检查多个条件。我收到错误'Cannot convert column into bool'。 我假设这是因为我使用in来检查值列表。该错误提供了替代其他东西,如和(&)和或(|),但没有任何内容。 有没有办法对所有值进行检查,而不是链接几个when语句?代码如下

affirm = ['yes', 'y', 'Y', 'Yes', 'YES']
neg = ['no', 'n', 'N', 'No', 'NO']
new_df.withColumn('resp', when(col("resp") in affirm, 'Yes').when(col("resp") in neg, 'No').otherwise('null'))

1 个答案:

答案 0 :(得分:4)

试试这个:

new_df.withColumn('resp', when(col("resp").isin(*affirm), 'Yes').when(col("resp").isin(*neg), 'No').otherwise('null'))

See docs