Pyspark 当使用withcolumn创建1和0的二进制列时,如何使nullable=true,

Pyspark 当使用withcolumn创建1和0的二进制列时,如何使nullable=true,,pyspark,pyspark-sql,databricks,Pyspark,Pyspark Sql,Databricks,这是我正在使用的代码 dfn = df.withColumn("id",F.when(F.col("number1") > F.col("number2"), 1 ).otherwise(0)) 问题: 它返回integerType和nullable=false 目标: 我想要它doubleType和nullable=true 非常感谢您当前的查询,此列永远不会为空,那么您为什么需要nullable=true?对于doubleT

这是我正在使用的代码

dfn = df.withColumn("id",F.when(F.col("number1") > F.col("number2"), 1 ).otherwise(0))
问题: 它返回
integerType
nullable=false

目标: 我想要它
doubleType
nullable=true


非常感谢您当前的查询

,此列永远不会为空,那么您为什么需要
nullable=true
?对于
doubleType
只需在(…)时强制转换由:
返回的值。否则(…).cast(“double”)
我在运行VectorAssembler时遇到了一些问题,但我已经发现了问题。不管怎样,谢谢你的回答,尽管它返回
doubleType
它仍然是
nullable=false
如果你不能重建原始df,我认为应该这样做
from pyspark.sql.types import DoubleType

dfn = df.withColumn("id",(F.when(F.col("number1") > F.col("number2"), 1 ).otherwise(0)).cast(DoubleType()))
dfn = dfn.withColumn("id", F.when(F.col("id").isNotNull(), F.col("id")).otherwise(F.lit(None)))

dfn.printSchema()