如何使nullable = true,使用withcolumn创建1和0的二进制列时,
Posted
技术标签:
【中文标题】如何使nullable = true,使用withcolumn创建1和0的二进制列时,【英文标题】:how to make nullable = true, When using withcolumn to create a binary column of 1 and 0, 【发布时间】:2020-02-21 11:48:15 【问题描述】:这是我正在使用的代码
dfn = df.withColumn("id",F.when(F.col("number1") > F.col("number2"), 1 ).otherwise(0))
问题:
它返回integerType
和nullable = false
。
目标:
我想要 doubleType
和 nullable = true
非常感谢
【问题讨论】:
对于您当前的查询,此列永远不会为空,那么您为什么需要nullable = true
?对于doubleType
,只需转换返回的值:when(...).otherwise(...).cast("double")
我在运行 VectorAssembler 时遇到了一些麻烦,但我已经发现了问题。还是谢谢
【参考方案1】:
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()
【讨论】:
感谢您的回答,虽然它返回doubleType
它仍然是 nullable = false
我认为如果您无法重建原始 df,那应该可以解决问题以上是关于如何使nullable = true,使用withcolumn创建1和0的二进制列时,的主要内容,如果未能解决你的问题,请参考以下文章