如果某些条件在火花组中满足,则为列添加值

5nv

我有一些很简单的东西。

我想要达到的目标是每组,如果满足特定条件,则增加一个数字(等级?)。对于每个组,它从1开始,如果满足条件,则下一行是上一行+1的值。在组内,每次满足条件时,都加1。

下表可能会更清楚地显示它。(我尝试创建的是“ what_i_want”列)

group   to_add_number   what_i_want
aaaaaa  0                 1
aaaaaa  0                 1
aaaaaa  1                 2
aaaaaa  0                 2
aaaaaa  0                 2
aaaaaa  1                 3
aaaaaa  0                 3
aaaaaa  0                 3
bbbbbb  0                 1
bbbbbb  1                 2
bbbbbb  1                 3
bbbbbb  0                 3
cccccc  0                 1
cccccc  0                 1
cccccc  0                 1
cccccc  1                 2

我认为可以使用窗口函数(滞后),但我无法到达那里。

我试过的是:

from pyspark.sql.functions import lit,when,lag,row_number
from pyspark.sql.window import Window

windowSpec=Window.partitionBy('group')
df=df.withColumn('tmp_rnk',lit(1))
df=df.withColumn('what_i_want',when(col('to_add_number')==0,lag('tmp_rnk').over(windowSpec)).otherwise(col('what_i_want')+1)

or

df=df.withColumn('tmp_rnk',lit(1))
df=df.withColumn('row_number_rank',row_number().over(windowSpec))
df=df.withColumn('what_i_want',when((col('to_add_number')==0)&(col('row_number_rank')==1)
,lit(1)
.when(col('to_add_number')==0)&(col('row_number_rank')>1),lag('what_i_want').over(windowSpec).otherwise(col('what_i_want')+1)

我尝试了几种变体,根据“条件窗口函数”,“滞后,超前....”搜索了stackoverflow,但没有任何效果,或者我没有找到重复的问题。

Murtihash

要获取column what_i_want,您可以incremental sumto_add_numberorderby列(order_id)上运行。

from pyspark.sql import functions as F
from pyspark.sql.window import Window

df.withColumn("order_id", F.monotonically_increasing_id())\
  .withColumn("what_i_want", F.sum("to_add_number").over(Window().partitionBy("group").orderBy("order_id"))+1)\
  .orderBy("order_id").drop("order_id").show()


#+------+-------------+-----------+
#| group|to_add_number|what_i_want|
#+------+-------------+-----------+
#|aaaaaa|            0|          1|
#|aaaaaa|            0|          1|
#|aaaaaa|            1|          2|
#|aaaaaa|            0|          2|
#|aaaaaa|            0|          2|
#|aaaaaa|            1|          3|
#|aaaaaa|            0|          3|
#|aaaaaa|            0|          3|
#|bbbbbb|            0|          1|
#|bbbbbb|            1|          2|
#|bbbbbb|            1|          3|
#|bbbbbb|            0|          3|
#|cccccc|            0|          1|
#|cccccc|            0|          1|
#|cccccc|            0|          1|
#|cccccc|            1|          2|
#+------+-------------+-----------+

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果满足条件,则为单元格添加值

来自分类Dev

如果其他任何列满足某些条件,如何将整个组放入熊猫中?

来自分类Dev

TSQL查询列,如果在行的“链”中满足条件,则为true

来自分类Dev

如何基于“如果特定列中的任何观测值满足条件,则为True”来创建Pandas data_frame列。

来自分类Dev

如何根据MATLAB中的某些条件向表的最后一列添加值?

来自分类Dev

根据条件在新列中添加值

来自分类Dev

python numpy创建数据集列:仅根据条件添加值,否则为null

来自分类Dev

如果某些行满足条件,则使用R中的数据表标记组中的所有行

来自分类Dev

如何在列中的字符串上添加两位数字/两个字母(如果满足某些条件)

来自分类Dev

Excel公式求和,如果其他列满足某些条件

来自分类Dev

Excel公式求和,如果其他列满足某些条件

来自分类Dev

如果满足m个条件中的任何一个,则为熊猫

来自分类Dev

如果满足同一表中的条件,则为SQL选择值

来自分类Dev

如果满足某些条件,则从元组列表中删除元组

来自分类Dev

如果某些条件在mysql中满足,则计数两次

来自分类Dev

如果未满足某些条件,从方法中返回什么?

来自分类Dev

在R中数据框的某些列中添加值

来自分类Dev

Python-如果满足csv文件中的条件,则添加时间戳列

来自分类Dev

如果满足条件,则将底部边框添加到行中特定数量的列

来自分类Dev

根据列值和SQL查询中的组添加值。

来自分类Dev

满足特定条件时向特定列的行添加值

来自分类Dev

R-根据另一个数据框的列中的值满足的条件,在数据框列中添加值(由公式得出)

来自分类Dev

根据Python中的条件在列中添加值

来自分类Dev

如果满足某些条件,则存入相同的值

来自分类Dev

如果满足某些条件,则计算行数

来自分类Dev

计算满足某些条件的矩阵中的列数

来自分类Dev

在满足条件的行中按组获取和修改列

来自分类Dev

如果条件满足,则分组列

来自分类Dev

根据Colimn中的某些数据添加值

Related 相关文章

  1. 1

    如果满足条件,则为单元格添加值

  2. 2

    如果其他任何列满足某些条件,如何将整个组放入熊猫中?

  3. 3

    TSQL查询列,如果在行的“链”中满足条件,则为true

  4. 4

    如何基于“如果特定列中的任何观测值满足条件,则为True”来创建Pandas data_frame列。

  5. 5

    如何根据MATLAB中的某些条件向表的最后一列添加值?

  6. 6

    根据条件在新列中添加值

  7. 7

    python numpy创建数据集列:仅根据条件添加值,否则为null

  8. 8

    如果某些行满足条件,则使用R中的数据表标记组中的所有行

  9. 9

    如何在列中的字符串上添加两位数字/两个字母(如果满足某些条件)

  10. 10

    Excel公式求和,如果其他列满足某些条件

  11. 11

    Excel公式求和,如果其他列满足某些条件

  12. 12

    如果满足m个条件中的任何一个,则为熊猫

  13. 13

    如果满足同一表中的条件,则为SQL选择值

  14. 14

    如果满足某些条件,则从元组列表中删除元组

  15. 15

    如果某些条件在mysql中满足,则计数两次

  16. 16

    如果未满足某些条件,从方法中返回什么?

  17. 17

    在R中数据框的某些列中添加值

  18. 18

    Python-如果满足csv文件中的条件,则添加时间戳列

  19. 19

    如果满足条件,则将底部边框添加到行中特定数量的列

  20. 20

    根据列值和SQL查询中的组添加值。

  21. 21

    满足特定条件时向特定列的行添加值

  22. 22

    R-根据另一个数据框的列中的值满足的条件,在数据框列中添加值(由公式得出)

  23. 23

    根据Python中的条件在列中添加值

  24. 24

    如果满足某些条件,则存入相同的值

  25. 25

    如果满足某些条件,则计算行数

  26. 26

    计算满足某些条件的矩阵中的列数

  27. 27

    在满足条件的行中按组获取和修改列

  28. 28

    如果条件满足,则分组列

  29. 29

    根据Colimn中的某些数据添加值

热门标签

归档