在pyspark数据框中添加具有另一列最大值的新列

ben

需要一些关于pyspark df的帮助。我正在尝试将具有另一列的最大值的新列追加到现有数据框,但低于错误。这就是我在做什么。

df1 = df.withColumn('WEEK_START_DATE', df.agg(f.max('DATE')))



error:
AttributeError: 'DataFrame' object has no attribute '_get_object_id'
Shu

我认为我们不能在withColumn中使用聚合函数,但是这里是此情况的解决方法。

1.Using crossJoin

from pyspark.sql.functions import *
df.show()    
#+---+----+
#| id|name|
#+---+----+
#|  1|   a|
#|  2|   b|
#|  3|   c|
#+---+----+
df1=df.agg(max('id'))
spark.sql("set spark.sql.crossJoin.enabled=true")
#cross join
df.join(df1)
#or
df.crossJoin(df1).show()
+---+----+-------+
#| id|name|max(id)|
#+---+----+-------+
#|  1|   a|      3|
#|  2|   b|      3|
#|  3|   c|      3|
#+---+----+-------+

2. Using Window function:

from pyspark.sql import *
import sys
w=Window.orderBy(monotonically_increasing_id()).rowsBetween(-sys.maxsize,sys.maxsize)
df.withColumn("max",max(col("id")).over(w)).show()
#+---+----+---+
#| id|name|max|
#+---+----+---+
#|  1|   a|  3|
#|  2|   b|  3|
#|  3|   c|  3|
#+---+----+---+

3. Using variable substitution:

max_value=df.agg(max("id")).collect()[0][0]

df.withColumn("max",lit(max_value)).show()

#or
max_value=lit(df.agg(max("id")).collect()[0][0])
type(max_value)
#<class 'pyspark.sql.column.Column'>
df.withColumn("max",max_value).show()
#+---+----+---+
#| id|name|max|
#+---+----+---+
#|  1|   a|  3|
#|  2|   b|  3|
#|  3|   c|  3|
#+---+----+---+

Using Spark-sql:

df.createOrReplaceTempView("tmp")
spark.sql("select * from tmp cross join (select max(id) max_val from tmp) t1").show()

spark.sql("select *,max(id) over(order by id rows between unbounded preceding and unbounded following) as max_val from tmp").show()

max_value=df.agg(max(col("id"))).collect()[0][0]
spark.sql("select *,{0} as max_val from tmp".format(max_value)).show()
#+---+----+-------+
#| id|name|max_val|
#+---+----+-------+
#|  1|   a|      3|
#|  2|   b|      3|
#|  3|   c|      3|
#+---+----+-------+

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

获取另一列中具有最大值的行的ID

来自分类Dev

如果另一列中的值> 0,则创建具有逻辑值的新列

来自分类Dev

提取R数据框中另一列中具有最大值的唯一行

来自分类Dev

根据另一列具有输入数据框的值替换一列的值

来自分类Dev

将数据框分组到一列,并从一列中获取最大值,并从另一列中获取其对应的值

来自分类Dev

从列表中的数据框创建数据框,并在R的一列中创建最大值

来自分类Dev

在pyspark中检查另一数据框中的一列中的一列的值

来自分类Dev

计算PostgreSQL中另一列中具有公共值的列值的最大值

来自分类Dev

如何从一列中检索与数据框中其他列的最大值对应的值

来自分类Dev

一列的最大值基于另一列的每个唯一值(数据框)

来自分类Dev

根据另一列的值根据条件添加具有值的新列

来自分类Dev

如何在数据框的中间添加具有基于前一列的值的新列?

来自分类Dev

R使用dplyr根据一列中的最大值对数据框进行变异

来自分类Dev

在具有相同ID pyspark数据框的另一列中显示不同的值

来自分类Dev

使用一组数据框中的每一列的每个单元格创建最大值的新数据框

来自分类Dev

CQL(cassandra)-仅选择其中一列中具有最大值的行

来自分类Dev

每个主键的熊猫只将具有最大值的行保留在另一列中

来自分类Dev

如何创建具有不同值的新表,但从另一列中选择最大值

来自分类Dev

根据同一数据框中另一列内容的条件,在数据框中添加新列

来自分类Dev

根据另一列具有输入数据框的值替换一列的值

来自分类Dev

在具有值的数据框中添加新列

来自分类Dev

根据另一列中的值将值添加到熊猫数据框的一列中

来自分类Dev

返回具有一列最大值的行

来自分类Dev

根据另一列确定一列中的最大值

来自分类Dev

从另一列的最大值中检索一列的最小值

来自分类Dev

如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

来自分类Dev

检索一列具有最大值的行

来自分类Dev

“是否有 Pandas 函数可以根据数据框另一列的某些值添加新列?”

Related 相关文章

  1. 1

    根据另一列中的值将值添加到熊猫数据框的一列中

  2. 2

    获取另一列中具有最大值的行的ID

  3. 3

    如果另一列中的值> 0,则创建具有逻辑值的新列

  4. 4

    提取R数据框中另一列中具有最大值的唯一行

  5. 5

    根据另一列具有输入数据框的值替换一列的值

  6. 6

    将数据框分组到一列,并从一列中获取最大值,并从另一列中获取其对应的值

  7. 7

    从列表中的数据框创建数据框,并在R的一列中创建最大值

  8. 8

    在pyspark中检查另一数据框中的一列中的一列的值

  9. 9

    计算PostgreSQL中另一列中具有公共值的列值的最大值

  10. 10

    如何从一列中检索与数据框中其他列的最大值对应的值

  11. 11

    一列的最大值基于另一列的每个唯一值(数据框)

  12. 12

    根据另一列的值根据条件添加具有值的新列

  13. 13

    如何在数据框的中间添加具有基于前一列的值的新列?

  14. 14

    R使用dplyr根据一列中的最大值对数据框进行变异

  15. 15

    在具有相同ID pyspark数据框的另一列中显示不同的值

  16. 16

    使用一组数据框中的每一列的每个单元格创建最大值的新数据框

  17. 17

    CQL(cassandra)-仅选择其中一列中具有最大值的行

  18. 18

    每个主键的熊猫只将具有最大值的行保留在另一列中

  19. 19

    如何创建具有不同值的新表,但从另一列中选择最大值

  20. 20

    根据同一数据框中另一列内容的条件,在数据框中添加新列

  21. 21

    根据另一列具有输入数据框的值替换一列的值

  22. 22

    在具有值的数据框中添加新列

  23. 23

    根据另一列中的值将值添加到熊猫数据框的一列中

  24. 24

    返回具有一列最大值的行

  25. 25

    根据另一列确定一列中的最大值

  26. 26

    从另一列的最大值中检索一列的最小值

  27. 27

    如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

  28. 28

    检索一列具有最大值的行

  29. 29

    “是否有 Pandas 函数可以根据数据框另一列的某些值添加新列?”

热门标签

归档