Scala:从每一行传递数据帧的元素并在单独的行中返回结果

赫曼特·古普塔

在我的要求中,我遇到了一种情况,我必须从我的数据框的 2 列中传递 2 个字符串并以字符串形式返回结果并希望将其存储回数据帧。现在,当将值作为字符串传递时,它总是返回相同的值。所以在所有行中都填充了相同的值。(在我的情况下,PPPP 正在填充所有行)

有没有办法从每一行传递元素(对于那两列)并在单独的行中获得结果。我准备修改我的函数以接受 Dataframe 并返回 Dataframe 或接受 arrayOfString 并返回 ArrayOfString 但我不知道该怎么做,因为我是编程新手。有人可以帮帮我吗。谢谢。

def myFunction(key: String , value :String ) : String =   {

  //Do my functions and get back a string value2 and return this value2 string
value2

}



val DF2 = DF1.select (
  DF1("col1")
 ,DF1("col2")
 ,DF1("col5")    )
 .withColumn("anyName", lit(myFunction ( DF1("col3").toString()  , DF1("col4").toString() )))




/* DF1:

/*+-----+-----+----------------+------+
/*|col1 |col2 |col3     | col4 | col 5|
/*+-----+-----+----------------+------+
/*|Hello|5    |valueAAA | XXX  | 123  |
/*|How  |3    |valueCCC | YYY  | 111  |
/*|World|5    |valueDDD | ZZZ  | 222  |
/*+-----+-----+----------------+------+


/*DF2:

/*+-----+-----+--------------+
/*|col1 |col2 |col5| anyName |
/*+-----+-----+--------------+
/*|Hello|5    |123 | PPPPP   |
/*|How  |3    |111 | PPPPP   |
/*|World|5    |222 | PPPPP   |
/*+-----+-----+--------------+ 
*/
堆栈0114106

定义函数后,需要将它们注册为 udf()。udf() 函数在 org.apache.spark.sql.functions 中可用。看一下这个

scala> val DF1 = Seq(("Hello",5,"valueAAA","XXX",123),
     | ("How",3,"valueCCC","YYY",111),
     | ("World",5,"valueDDD","ZZZ",222)
     | ).toDF("col1","col2","col3","col4","col5")
DF1: org.apache.spark.sql.DataFrame = [col1: string, col2: int ... 3 more fields]

scala> val DF2 = DF1.select (  DF1("col1") ,DF1("col2") ,DF1("col5")    )
DF2: org.apache.spark.sql.DataFrame = [col1: string, col2: int ... 1 more field]

scala> DF2.show(false)
+-----+----+----+
|col1 |col2|col5|
+-----+----+----+
|Hello|5   |123 |
|How  |3   |111 |
|World|5   |222 |
+-----+----+----+


scala> DF1.select("*").show(false)
+-----+----+--------+----+----+
|col1 |col2|col3    |col4|col5|
+-----+----+--------+----+----+
|Hello|5   |valueAAA|XXX |123 |
|How  |3   |valueCCC|YYY |111 |
|World|5   |valueDDD|ZZZ |222 |
+-----+----+--------+----+----+

scala> def myConcat(a:String,b:String):String=
     | return a + "--" + b
myConcat: (a: String, b: String)String

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

scala> val myConcatUDF = udf(myConcat(_:String,_:String):String)
myConcatUDF: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function2>,StringType,Some(List(StringType, StringType)))

scala> DF1.select (  DF1("col1") ,DF1("col2") ,DF1("col5"), myConcatUDF( DF1("col3"), DF1("col4"))).show()
+-----+----+----+---------------+
| col1|col2|col5|UDF(col3, col4)|
+-----+----+----+---------------+
|Hello|   5| 123|  valueAAA--XXX|
|  How|   3| 111|  valueCCC--YYY|
|World|   5| 222|  valueDDD--ZZZ|
+-----+----+----+---------------+


scala>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较两个数据帧并在pyspark中返回一行的结果

来自分类Dev

每输入一行返回多行/列的数据帧

来自分类Dev

如何将数据帧的每个元素乘以R中每一行的元素总和?

来自分类Dev

在Scala中的Spark数据帧的每一行中查找最大值

来自分类Dev

如何替换大于特定阈值的数据帧的每一行中的前n个元素

来自分类Dev

如何从R中的数据帧的每一行中选择最常出现的元素

来自分类Dev

查找数据帧中每一行的出现次数

来自分类Dev

数据帧中每一行的矩阵乘法

来自分类Dev

在R中打印合并数据帧的每一行

来自分类Dev

修改数据帧每一行中的值

来自分类Dev

遍历数据帧中的每一行,并在相应的x和y列中绘制值(散点图)

来自分类Dev

在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

来自分类Dev

在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

来自分类Dev

使用R中的Apply系列将2列数据帧的每一行传递给我创建的函数?

来自分类Dev

如何返回第一行,该行比数据帧中每列的最小值高10%?

来自分类Dev

在每一行中查找特定单词并在Unix Shell脚本中显示结果

来自分类Dev

一行的每两个输入保存在单独的数据库行中

来自分类Dev

在R中为数据帧的每一行绘制不同的行

来自分类Dev

循环遍历数据帧的每一行,并根据条件将元素添加到数据帧

来自分类Dev

在 Pandas 数据帧上使用转换函数,为数据帧的每一行返回新值

来自分类Dev

如何在单独的数据帧中为每个值重复数据帧的每一行,然后将两者合并为一个数据帧?

来自分类Dev

将向量减去到数据帧的每一行

来自分类Dev

数据帧每一行的单个条形图

来自分类Dev

在 Pandas 数据帧的每一行上应用函数

来自分类Dev

为R数据帧中的每一行绘制一个函数

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

计算R中数据帧每一行中连续出现的特定值

来自分类Dev

从熊猫数据帧的每一行中的单词中删除多个字符组合

Related 相关文章

  1. 1

    比较两个数据帧并在pyspark中返回一行的结果

  2. 2

    每输入一行返回多行/列的数据帧

  3. 3

    如何将数据帧的每个元素乘以R中每一行的元素总和?

  4. 4

    在Scala中的Spark数据帧的每一行中查找最大值

  5. 5

    如何替换大于特定阈值的数据帧的每一行中的前n个元素

  6. 6

    如何从R中的数据帧的每一行中选择最常出现的元素

  7. 7

    查找数据帧中每一行的出现次数

  8. 8

    数据帧中每一行的矩阵乘法

  9. 9

    在R中打印合并数据帧的每一行

  10. 10

    修改数据帧每一行中的值

  11. 11

    遍历数据帧中的每一行,并在相应的x和y列中绘制值(散点图)

  12. 12

    在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

  13. 13

    在R中,如何为数据帧中的每一行取不同数量的元素的平均值?

  14. 14

    使用R中的Apply系列将2列数据帧的每一行传递给我创建的函数?

  15. 15

    如何返回第一行,该行比数据帧中每列的最小值高10%?

  16. 16

    在每一行中查找特定单词并在Unix Shell脚本中显示结果

  17. 17

    一行的每两个输入保存在单独的数据库行中

  18. 18

    在R中为数据帧的每一行绘制不同的行

  19. 19

    循环遍历数据帧的每一行,并根据条件将元素添加到数据帧

  20. 20

    在 Pandas 数据帧上使用转换函数,为数据帧的每一行返回新值

  21. 21

    如何在单独的数据帧中为每个值重复数据帧的每一行,然后将两者合并为一个数据帧?

  22. 22

    将向量减去到数据帧的每一行

  23. 23

    数据帧每一行的单个条形图

  24. 24

    在 Pandas 数据帧的每一行上应用函数

  25. 25

    为R数据帧中的每一行绘制一个函数

  26. 26

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  27. 27

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  28. 28

    计算R中数据帧每一行中连续出现的特定值

  29. 29

    从熊猫数据帧的每一行中的单词中删除多个字符组合

热门标签

归档