2015-10-26 36 views
5

假設我有一個數據幀x用這個模式:從布爾一個數據幀鑄造一個新的派生列整數

xSchema = StructType([ \ 
    StructField("a", DoubleType(), True), \ 
    StructField("b", DoubleType(), True), \ 
    StructField("c", DoubleType(), True)]) 

我那麼有數據幀:

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爲真假和1。

cast函數只能在柱上,而不是DataFrame操作,並且withColumn函數只可以在DataFrame操作。如何添加一個新列並將其同時轉換爲整數?

回答

6

您使用Expression求列,這樣就可以像這樣直接澆鑄:

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