如何在PySpark DataFrame中为列分配布尔值True/False
PySpark DataFrame添加布尔列报错的解决方法
- 报错根源:
withColumn的第二个参数必须是Column类型对象,直接传入Python原生布尔值True不符合参数要求,因此触发AssertionError: col should be Column。 - 正确实现方式:使用
lit()函数包裹布尔值,它会将Python原生布尔值转换为PySpark的Column对象,且默认就是布尔类型,并非字符串:from pyspark.sql.functions import lit df = df.withColumn('my_column_name', lit(True)) - 关于你提到的
col(BooleanType(True)):这种写法不成立,col()函数用于引用已存在的列名,BooleanType是数据类型定义类,二者不能这样组合。如果需要显式指定类型,可这样写:
不过一般无需显式转换,from pyspark.sql.functions import lit from pyspark.sql.types import BooleanType df = df.withColumn('my_column_name', lit(True).cast(BooleanType()))lit(True)本身生成的就是布尔类型的Column。
内容的提问来源于stack exchange,提问作者DSolei
相关产品推荐
相关产品推荐

