我想計算同一列內兩個值之間的差異。現在我只想要最後一個值和第一個值之間的差異,但是使用last(column)會返回空值結果。 last()不會返回一個值嗎?有沒有辦法將我想要的值的位置作爲變量傳遞;例如:10日和1日,或7日和6日?從數據框列中選擇值
Current code
使用火花1.4.0和Scala 2.11.6
myDF =
由m列一些數據幀具有n行
def difference(col: Column): Column = { last(col)-first(col) }
def diffCalcs(dataFrame: DataFrame): DataFrame = { import hiveContext.implicits._ dataFrame.agg( difference($"Column1"), difference($"Column2"), difference($"Column3"), difference($"Column4") ) }
當運行diffCalcs(myDF)
它返回一個null
結果。如果我修改difference
只有first(col)
,它確實返回四列的第一個值。但是,如果將其更改爲last(col)
,則返回null
。如果我打電話給myDF.show()
,我可以看到所有列的每行都有Double
值,任何列中都沒有null
值。
我通過列我想要一個函數:'last(col)-first(col)',但它返回一個'null'。 '第一個(col)'返回適當的,但是'last(col)'返回'null'。 – the3rdNotch
我想我也想明確說明列中的值都不是'null',它們都是雙精度值。 – the3rdNotch
請發佈一個[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)。 – zero323