如何在数据框中拆分列并添加拆分值

巴韦什

我有一个列“年龄”的字符串类型的数据框,我想更改以下形式的值。

  • 空到 999
  • NaN 到 0
  • 年龄大于 200 至 999
  • 范围 (val1-val2) 到 (val1 + val 2) / 2
  • 保持其他值不变。

例如输入值

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数据框中按因子拆分列

来自分类Dev

如何在SQL中拆分值

来自分类Dev

如何在angularjs中拆分值?

来自分类Dev

如何在数据框中将行拆分为列

来自分类Dev

如何在Prolog中拆分列表?

来自分类Dev

如何在python中拆分列表

来自分类Dev

如何在Flutter中拆分列表

来自分类Dev

如何在Scala中拆分列表?

来自分类Dev

如何在元组中拆分列表?

来自分类Dev

如何使用javascript中的拆分值拆分?

来自分类Dev

如何用javascript中的拆分值拆分?

来自分类Dev

Python Pandas:如何在数据框的列中拆分排序的字典

来自分类Dev

Python:如何在数据框中拆分字符串列?

来自分类Dev

Python Pandas:如何在数据框的列中拆分已排序的字典

来自分类Dev

如何在数据框中拆分字符串并将逗号作为分隔符

来自分类Dev

在数据框中动态拆分行

来自分类Dev

在数据框中动态拆分行

来自分类Dev

如何在Ruby中从字符串中拆分值

来自分类Dev

在熊猫中拆分列表并转换为数据框

来自分类Dev

在熊猫数据框中拆分列并分配标题

来自分类Dev

在行中拆分列表 python pandas 数据框

来自分类Dev

如何在python中的多个点拆分值

来自分类Dev

如何在 XSL 1.0 中设置拆分值

来自分类Dev

如何组合数据框中的字符串以列出和拆分列?

来自分类Dev

拆分列并生成数据框

来自分类Dev

如何在R中不使用分隔符的情况下拆分列数据

来自分类Dev

在 jquery 中拆分值

来自分类常见问题

如何在熊猫数据框中拆分元组列?

来自分类Dev

如何在Python中拆分列表元素