将DataFrame中的新派生列从布尔型转换为整数



假设我有一个DataFrame x,模式如下:

xSchema = StructType([ 
    StructField("a", DoubleType(), True), 
    StructField("b", DoubleType(), True), 
    StructField("c", DoubleType(), True)])
然后是DataFrame:
DataFrame[a :double, b:double, c:double]

我想有一个整数派生列。我能够创建一个布尔列:

x = x.withColumn('y', (x.a-x.b)/x.c > 1)

我的新模式是:

DataFrame[a :double, b:double, c:double, y: boolean]

但是,我希望列y包含0表示False, 1表示True。

cast函数只能对列操作,不能对DataFrame操作,withColumn函数只能对DataFrame操作。我如何添加一个新的列,并将其转换为整数在同一时间?

您使用的表达式对列求值,因此可以像这样直接强制转换:

x.withColumn('y', ((x.a-x.b) / x.c > 1).cast('integer')) # Or IntegerType()

相关内容

  • 没有找到相关文章

最新更新