我有一个列“年龄”的字符串类型的数据框,我想更改以下形式的值。
例如输入值
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
您可以编写一个简单的 UDF 函数来获取结果
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
称为
df.withColumn("newAge", scrubUdf($"Age"))
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句