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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

修改数据帧每一行中的值

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

    修改数据帧每一行中的值

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档