18

假设我有一个x具有此架构的 DataFrame:

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函数只能对列进行操作,而不能对 a 进行操作,DataFrame并且该withColumn函数只能对 a 进行操作DataFrame。如何添加新列并同时将其转换为整数?

4

1 回答 1

29

您使用的表达式计算为列,因此您可以像这样直接转换:

x.withColumn('y', ((x.a-x.b) / x.c > 1).cast('integer')) # Or IntegerType()
于 2015-10-26T20:20:46.133 回答