如何将一个数据框循环到另一数据框并获取pyspark中的单个匹配记录

玫瑰1110

**资料框1 **

 +----+------+------+-----+-----+
 |key  |dc_count|dc_day_count   |
 +----+------+------+-----+-----+
 | 123 |13      |66             |
 | 123 |13      |12             |
 +----+------+------+-----+-----+

        

**规则数据框**

 +----+------+------+-----+-----++------+-----+-----+
 |key  |rule_dc_count|rule_day_count   |rule_out    | 
 +----+------+------+-----+-----++------+-----+-----+
 | 123 |2            |30               |139         |
 | 123 |null         |null             |64          |
 | 124 |2            |30               |139         |
 | 124 |null         |null             |64          |
 +----+------+------+-----+-----+----+------+-----+--

如果dc_count> rule_dc_count和dc_day_count> rule_day_count填充了相应的rule_out
,则其他则为rule_out”

预期产量

 +----+------+------+-
 |key  |rule_out    | 
 +----+------+------+
 | 123 | 139        |
 | 124 |  64        |
 +----+------+------+
dsk

PySpark版本

这里的挑战是获取同一列中键的第二行值,以便解析此LEAD()分析函数。

在这里创建DataFrame

from pyspark.sql import functions as F
df = spark.createDataFrame([(123,13,66),(124,13,12)],[ "key","dc_count","dc_day_count"])
df1 = spark.createDataFrame([(123,2,30,139),(123,0,0,64),(124,2,30,139),(124,0,0,64)],
                            ["key","rule_dc_count","rule_day_count","rule_out"])

获得所需结果的逻辑

from pyspark.sql import Window as W
_w = W.partitionBy('key').orderBy(F.col('key').desc())
df1 = df1.withColumn('rn', F.lead('rule_out').over(_w))
df1 = df1.join(df,'key','left')
df1 = df1.withColumn('condition_col', 
                     F.when(
  (F.col('dc_count') > F.col('rule_dc_count')) & 
  (F.col('dc_day_count') > F.col('rule_day_count')),F.col('rule_out'))
                     .otherwise(F.col('rn')))

df1 = df1.filter(F.col('rn').isNotNull())

输出量

df1.show()
+---+-------------+--------------+--------+---+--------+------------+-------------+
|key|rule_dc_count|rule_day_count|rule_out| rn|dc_count|dc_day_count|condition_col|
+---+-------------+--------------+--------+---+--------+------------+-------------+
|124|            2|            30|     139| 64|      13|          12|           64|
|123|            2|            30|     139| 64|      13|          66|          139|
+---+-------------+--------------+--------+---+--------+------------+-------------+

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

在R中,如何将一个数据框中选定行中的值与另一数据框中选定列的值进行匹配?

来自分类Dev

在R中,如何将一个数据框中选定行中的值与另一数据框中选定列的值进行匹配?

来自分类Dev

如何将一个数据框中的整个列替换为另一数据框中的另一列?

来自分类Dev

根据R中另一数据框中的条件值来匹配/子集一个数据框

来自分类Dev

将架构从一个数据框复制到另一数据框

来自分类Dev

如何从一个数据框向另一数据框添加列?

来自分类Dev

如何使一个数据框与另一数据框保持相同的行?

来自分类Dev

如何将列表列与熊猫中另一个数据框中的列匹配?

来自分类Dev

如何将整个行与另一个数据框中的匹配行名相乘?

来自分类Dev

如何从一个数据框中删除属于另一数据框的所有行?

来自分类Dev

如何将值从数据框添加到另一个数据框以获取正确的索引?

来自分类Dev

Pandas数据框-将N行数从一个数据框移至另一数据框

来自分类Dev

如何将一个数据框转换为另一个数据框

来自分类Dev

检查一个数据框值是否与另一数据框列匹配,然后在数据框列中设置值

来自分类Dev

如何将一个数据框的行复制到另一个数据框

来自分类Dev

如何将单元格值从一个数据帧复制到另一数据帧(不匹配的数据帧长度)

来自分类Dev

如何将数据框中的特定列与同一数据框中的一个特定列相乘?

来自分类Dev

如何将数据框中的特定列与同一数据框中的一个特定列相乘?

来自分类Dev

如何将数据框中的值匹配到另一个

来自分类Dev

匹配一个数据框中的列中的项目,并替换为另一数据框中的相应项目

来自分类Dev

大熊猫:将行从一个数据框添加到另一数据框?

来自分类Dev

将一个数据框的整个列设置为另一数据框的列的最小值

来自分类Dev

将一个数据框的多列除以另一数据框R的行名值

来自分类Dev

熊猫:如何将多个列值与另一个数据框匹配并生成输出

来自分类Dev

根据另一数据框的行对一个数据框的列进行子集

来自分类Dev

如何将一个熊猫数据框中的所有小时值与另一个数据框中的年值相乘?

来自分类Dev

从一个数据框中的价格减去另一数据框中的价格

来自分类Dev

Python Pandas:一个数据框中的列的行值变成另一数据框中的列

来自分类Dev

如何使用一个数据框的列位置选择另一数据框的索引

Related 相关文章

  1. 1

    在R中,如何将一个数据框中选定行中的值与另一数据框中选定列的值进行匹配?

  2. 2

    在R中,如何将一个数据框中选定行中的值与另一数据框中选定列的值进行匹配?

  3. 3

    如何将一个数据框中的整个列替换为另一数据框中的另一列?

  4. 4

    根据R中另一数据框中的条件值来匹配/子集一个数据框

  5. 5

    将架构从一个数据框复制到另一数据框

  6. 6

    如何从一个数据框向另一数据框添加列?

  7. 7

    如何使一个数据框与另一数据框保持相同的行?

  8. 8

    如何将列表列与熊猫中另一个数据框中的列匹配?

  9. 9

    如何将整个行与另一个数据框中的匹配行名相乘?

  10. 10

    如何从一个数据框中删除属于另一数据框的所有行?

  11. 11

    如何将值从数据框添加到另一个数据框以获取正确的索引?

  12. 12

    Pandas数据框-将N行数从一个数据框移至另一数据框

  13. 13

    如何将一个数据框转换为另一个数据框

  14. 14

    检查一个数据框值是否与另一数据框列匹配,然后在数据框列中设置值

  15. 15

    如何将一个数据框的行复制到另一个数据框

  16. 16

    如何将单元格值从一个数据帧复制到另一数据帧(不匹配的数据帧长度)

  17. 17

    如何将数据框中的特定列与同一数据框中的一个特定列相乘?

  18. 18

    如何将数据框中的特定列与同一数据框中的一个特定列相乘?

  19. 19

    如何将数据框中的值匹配到另一个

  20. 20

    匹配一个数据框中的列中的项目,并替换为另一数据框中的相应项目

  21. 21

    大熊猫:将行从一个数据框添加到另一数据框?

  22. 22

    将一个数据框的整个列设置为另一数据框的列的最小值

  23. 23

    将一个数据框的多列除以另一数据框R的行名值

  24. 24

    熊猫:如何将多个列值与另一个数据框匹配并生成输出

  25. 25

    根据另一数据框的行对一个数据框的列进行子集

  26. 26

    如何将一个熊猫数据框中的所有小时值与另一个数据框中的年值相乘?

  27. 27

    从一个数据框中的价格减去另一数据框中的价格

  28. 28

    Python Pandas:一个数据框中的列的行值变成另一数据框中的列

  29. 29

    如何使用一个数据框的列位置选择另一数据框的索引

热门标签

归档