假设我有一个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()