如何编写通用函数以评估Spark数据框的列中的列值

他的

嗨,我有下面的数据框,其中包含国家/地区列以及其他多个列以及不多的行。我想编写一个通用函数(由于在多个地方使用),可以在withcolumn内部使用以创建新列。

输入

| countries  |
|------------|
| RFRA       | 
| BRES       |
| EAST       |
| RUSS       |
| ....       | 

输出

| countries |
|-----------|
| FRA       | 
| BRA       |
| POL       |
| RUS       |
| ...       |

下面是我将国家/地区列传递给函数时的代码,无法使用字符串求值。如何从列中提取值并使用指定的字符串值求值,我想作为列返回。

val df = sample.withColumn("renamedcountries", replace($"countries"))

def replace(countries: Column) :Column = {
  val Updated = countries match {
    case "RFRA" => "FRA"
    case "BRES" => "BRA"
    case "RESP" => "ESP"
    case "RBEL" => "BEL"
    case "RGRB" => "GBR"
    case "RALL" => "DEU"
    case "MARO" => "MAR"
    case "RPOR" => "PRT"
    case _ => "unknown"
  }
  Updated
}
苏西瓦

包装您拥有的函数逻辑,udf然后udf从代码的不同地方调用它

   import org.apache.spark.sql.functions._

   val df = Seq( ("RFRA"), ("BRES"), ("RUSS")).toDF("countries")

   val mapCountries = udf[String, String](country => {
      val Updated = country match {
        case "RFRA" => "FRA"
        case "BRES" => "BRA"
        case "RESP" => "ESP"
        case "RBEL" => "BEL"
        case "RGRB" => "GBR"
        case "RALL" => "DEU"
        case "MARO" => "MAR"
        case "RPOR" => "PRT"
        case _ => "unknown"
      }
    Updated
   })

   df.withColumn("renamedCountries", mapCountries($"countries")).show()
  
+---------+----------------+
|countries|renamedCountries|
+---------+----------------+
|     RFRA|             FRA|
|     BRES|             BRA|
|     RUSS|         unknown|
+---------+----------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用数据框从csv编写函数以读取和返回python中的列值

如何编写自定义函数以显示数据框中每个变量的值计数以及级别?

自定义函数以过滤pandas数据框列中的值

创建函数以格式化数据框中的列

创建函数以重命名Pandas数据框中的列

编写通用函数以基于熊猫中另一个列的值来计算基于列的特定条件

如何编写通用函数以在 C 中重用

Spark数据框中的列值比较

如何编写函数以动态查询熊猫数据框?

编写一个基于数据框的列值在矩阵中查找元素的函数

如何更新 Spark 中的数据框列

如何使用Scala在Spark数据框中为每个不同的列值创建行ID的列

应用列范围函数时,如何从数据框中的不同列中获取某些值?

如何小写数据框中的列值?

如何合并数据框列中的值

在分组的 dplyr 数据框中迭代应用函数以在 R 中创建列

如何编写函数以使用字典类型 Serires 和 Dataframe 中的列?

根据列中的值复制 Spark 数据框中的行

从Spark中的数据框列值中删除空格

Spark,Scala-如何从数据框的两列中的每组中获取前3个值

如何在spark scala中截断数据框中多行和多列的值

数据框列中的嵌套列表,提取数据框列中的列表值Pyspark Spark

无法从Spark数据框中获取列值

使用 Spark 数据框映射 ArrayType 列中的值

如何在Spark Scala数据框中更新xml的嵌套列值

如何通过熊猫或spark数据框删除所有行中具有相同值的列?

如何在Spark / Scala中对数据框的一列的值求和

如何拆分输入文件名并在spark数据框列中添加特定值

如何有效地选择Spark中包含特定值的数据框列?