簡體   English   中英

如何對具有單列的PySpark數據框進行正向填充缺失值估算?

[英]How do forward fill missing value imputation for a PySpark dataframe with single column?

我有一個單列的PySpark數據框。

| Rank  
|----------
| 10
| 10
| null   
| null     
| 15
| null
| 20
| null     
| null     
| 15
| null   
| 10

我想使用正向填充(例如pandas ffill()函數)來估算缺少的值。

期望的輸出

| Rank    
|----------
| 10
| 10
| 10   
| 10     
| 15
| 15
| 20
| 20     
| 20     
| 15
| 15   
| 10

免責聲明:我在stackoverflow中有一些解決方案,但是當您只有一個列作為輸入時,它們將無法工作。

請檢查火花中的滯后超前功能。

滯后和超前僅用於獲得一個偏移量。 使用全局變量簡單創建udf應該可以解決問題以下是簡單示例

var PRV_RANK = 0f

import spark.implicits._
val data = spark.sparkContext.parallelize(Seq(10f, 10f, Float.NaN, Float.NaN, 15f, Float.NaN, 20f, Float.NaN, Float.NaN, 15f, Float.NaN, 10f))
  .toDF("rank")

val forwardFill = udf((rank: Float) =>
{
  if (rank == null || rank.equals(Float.NaN)){
    PRV_RANK
  }
  else {
    PRV_RANK = rank
    rank
  }
})

data.withColumn("rankNew", forwardFill($"rank")).show()

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM