如何为每个其他列创建一系列事件(列值)?

回归器

我有一个 Spark 数据框,如下所示 -

val myDF = Seq(
(1,"A",100,0,0),
(1,"E",200,0,0),
(1,"",300,1,49),
(2,"A",200,0,0),
(2,"C",300,0,0),
(2,"D",100,0,0)
).toDF("visitor","channel","timestamp","purchase_flag","amount")


scala> myDF.show
+-------+-------+---------+-------------+------+
|visitor|channel|timestamp|purchase_flag|amount|
+-------+-------+---------+-------------+------+
|      1|      A|      100|            0|     0|
|      1|      E|      200|            0|     0|
|      1|       |      300|            1|    49|
|      2|      A|      200|            0|     0|
|      2|      C|      300|            0|     0|
|      2|      D|      100|            0|     0|
+-------+-------+---------+-------------+------+

我想为每个访问者创建 Sequence 数据框,myDF以便跟踪访问者按timestamp维度订购的购买路径输出数据帧应如下所示(->可以是任何分隔符)-

+-------+---------------------+
|visitor|channel sequence     |
+-------+---------------------+
|      1| A->E->purchase      |
|      2| D->A->C->no_purchase|
+-------+---------------------+

为了清楚起见,visitor2已经暴露于 channel D,然后A,然后C他没有购买。因此该序列将形成为D->A-C->no_purchase

注意:每当发生进货,渠道价值远远blank并且purchase_flag设置为1。

我想Scala UDF在 Spark 中使用 a 来做到这一点,以便我在其他数据集上重新应用该方法。

拉梅什·马哈詹

这是使用udf函数完成的方法

val myDF = Seq(
  (1,"A",100,0,0),
  (1,"E",200,0,0),
  (1,"",300,1,49),
  (2,"A",200,0,0),
  (2,"C",300,0,0),
  (2,"D",100,0,0)
).toDF("visitor","channel","timestamp","purchase_flag","amount")

import org.apache.spark.sql.functions._
def sequenceUdf = udf((struct: Seq[Row], purchased: Seq[Int])=> struct.map(row => (row.getAs[String]("channel"), row.getAs[Int]("timestamp"))).sortBy(_._2).map(_._1).filterNot(_ == "").mkString("->")+{if(purchased.contains(1)) "->purchase" else "->no_purchase"})

myDF.groupBy("visitor").agg(collect_list(struct("channel", "timestamp")).as("struct"), collect_list("purchase_flag").as("purchased"))
  .select(col("visitor"), sequenceUdf(col("struct"), col("purchased")).as("channel sequence"))
  .show(false)

这应该给你

+-------+--------------------+
|visitor|channel sequence    |
+-------+--------------------+
|1      |A->E->purchase      |
|2      |D->A->C->no_purchase|
+-------+--------------------+

您可以使其尽可能通用。这只是关于您应该如何进行的演示

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用(d)plyr创建一系列新列

来自分类Dev

如何从一系列样本中创建Observable?

来自分类Dev

如何为没有x值的一系列数据创建Box Plot

来自分类Dev

Webpack:如何为带有一系列依赖项的“ webpack”创建加载器?

来自分类Dev

在其他列中填充一系列可能值的列:在R中

来自分类Dev

Postgres生成一系列列

来自分类Dev

如何根据Google表格中的一系列值动态创建字符串

来自分类Dev

在一系列系列中,如何从每个子系列事件中的第n个数字中减去每个第一个数字?

来自分类Dev

在列中的一系列值的上下插值-Pandas

来自分类Dev

创建具有一系列值的表,而无需手动插入每个值

来自分类Dev

尝试用一系列值替换一组文件中的特定列

来自分类Dev

如何使用if命令为R上的一系列值创建函数

来自分类Dev

如何管理一系列单选按钮的事件?

来自分类Dev

如何使单个联接值与一系列值匹配

来自分类Dev

复杂的Q承诺:一个承诺会创建一系列其他承诺

来自分类Dev

如何为一系列命令创建别名?

来自分类Dev

如何从一系列事件中创建日历?

来自分类Dev

在其他列中填充一系列可能值的列:在R中

来自分类Dev

根据一系列True / False条件动态创建二进制值列

来自分类Dev

对字段中的每个值执行一系列命令

来自分类Dev

如何动态求和一系列列

来自分类Dev

如何为每行返回一系列列中的第一个非NULL值?第二个非NULL值?

来自分类Dev

如何根据多索引定义的范围对一列中的一系列值求和

来自分类Dev

Javascript如何为从PHP foreach循环创建的一系列按钮创建切换按钮

来自分类Dev

如何创建交叉应用一系列内联表值 UDF 的视图?

来自分类Dev

如何在一系列其他两个数组之间创建一个随机数组?

来自分类Dev

如何使用 COMPUTE 在 SPSS 中创建和计算一系列值?

来自分类Dev

如何在R中选择一系列列

来自分类Dev

如何为其他两列的每个组合创建一个带有新列的新数据框行?

Related 相关文章

  1. 1

    使用(d)plyr创建一系列新列

  2. 2

    如何从一系列样本中创建Observable?

  3. 3

    如何为没有x值的一系列数据创建Box Plot

  4. 4

    Webpack:如何为带有一系列依赖项的“ webpack”创建加载器?

  5. 5

    在其他列中填充一系列可能值的列:在R中

  6. 6

    Postgres生成一系列列

  7. 7

    如何根据Google表格中的一系列值动态创建字符串

  8. 8

    在一系列系列中,如何从每个子系列事件中的第n个数字中减去每个第一个数字?

  9. 9

    在列中的一系列值的上下插值-Pandas

  10. 10

    创建具有一系列值的表,而无需手动插入每个值

  11. 11

    尝试用一系列值替换一组文件中的特定列

  12. 12

    如何使用if命令为R上的一系列值创建函数

  13. 13

    如何管理一系列单选按钮的事件?

  14. 14

    如何使单个联接值与一系列值匹配

  15. 15

    复杂的Q承诺:一个承诺会创建一系列其他承诺

  16. 16

    如何为一系列命令创建别名?

  17. 17

    如何从一系列事件中创建日历?

  18. 18

    在其他列中填充一系列可能值的列:在R中

  19. 19

    根据一系列True / False条件动态创建二进制值列

  20. 20

    对字段中的每个值执行一系列命令

  21. 21

    如何动态求和一系列列

  22. 22

    如何为每行返回一系列列中的第一个非NULL值?第二个非NULL值?

  23. 23

    如何根据多索引定义的范围对一列中的一系列值求和

  24. 24

    Javascript如何为从PHP foreach循环创建的一系列按钮创建切换按钮

  25. 25

    如何创建交叉应用一系列内联表值 UDF 的视图?

  26. 26

    如何在一系列其他两个数组之间创建一个随机数组?

  27. 27

    如何使用 COMPUTE 在 SPSS 中创建和计算一系列值?

  28. 28

    如何在R中选择一系列列

  29. 29

    如何为其他两列的每个组合创建一个带有新列的新数据框行?

热门标签

归档