我有一个数据框,其列为#34; age"类型为String,我想以下面的形式更改值。
输入值,例如
Age
=====
0
null
NaN
999
200
35
25-30
45
null
NaN
35-40
======
需要输出
Age
=====
0
999
0
999
999
35
27
45
999
0
37
======
我已经尝试过的代码
val formatted_df1 = df.withColumn("age", regexp_replace(col("age"), "null", "999")) -- This will change the value from null to 999
val formatted_df2 = formatted_df1.withColumn("age", regexp_replace(col("age"), "NaN", "0")) -- This will change the value from NaN to 0
答案 0 :(得分:2)
您可以编写一个简单的UDF函数来获得结果
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" value="click" id="btn">
您可以将val scrubUdf = udf((value : String ) => {
value match {
case "NaN" => 0
case "null" => 999
case null => 999
case x if x.contains("-") => {
// (value.split("-")(0).toInt + value.split("-")(1).toInt) / 2
x.split("-").map(x=> x.toInt).sum / 2
}
case x if x.toInt >= 200 => 999
case _ => value.toInt
}
})
称为
udf
希望这有帮助!