pysparkデータフレームに別の列の最大値を持つ新しい列を追加します

ベン

pysparkdfに関するヘルプが必要です。別の列の最大値を持つ新しい列を既存のデータフレームに追加しようとしていますが、エラーを下回っています。これが私がしていることです。

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



error:
AttributeError: 'DataFrame' object has no attribute '_get_object_id'
シュウ

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

Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

分類Dev

別の列に依存する値を持つ列をデータフレームに追加します

分類Dev

pandasデータフレームは、リスト要素を持つ別のpandas列に列値を追加します

分類Dev

リストタイプの列を持つデータフレームに新しい行を追加します

分類Dev

PySpark:データフレーム内のUUIDを持つ列に基づいて新しい列を追加します

分類Dev

pysparkデータフレームは左結合し、一定の値を持つ新しい列を追加します

分類Dev

pysparkデータフレームは左結合し、一定の値を持つ新しい列を追加します

分類Dev

Pyspark:別のpysparkデータフレームから新しい列を追加します

分類Dev

pandasデータフレームに一致する値を持つ新しい列を追加します

分類Dev

rのデータフレームの各列で最大値を持つ行を識別します

分類Dev

PySparkデータフレームに最も近い値を持つ列を追加します

分類Dev

R-別のデータフレームの一致する値を使用して、データフレームに新しい列を追加します

分類Dev

リストとデータフレームに基づいて複数の条件を持つデータフレームに新しい列を追加します

分類Dev

パンダ:groupbyデータフレームにいくつかの値を持つ新しい列を追加します

分類Dev

pysparkデータフレーム文字列列から新しい列に最初の数値を取得します

分類Dev

パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

分類Dev

データフレーム列のレベルを使用して、各レベルに固有の増分番号を持つ新しい列を追加します

分類Dev

Pyspark:指定された列の個別の値ごとにデータフレーム値を追加します

分類Dev

他の列の値を比較した後、新しい列をデータフレームに追加します

分類Dev

pysparkデータフレームの2つの列をループしながら、新しい列に値を追加する

分類Dev

Pyspark:1つの列の値に基づいて、あるデータフレームを別のデータフレームから減算します

分類Dev

他の列から値を追加して、Pandaデータフレームに新しい列を作成します

分類Dev

ScalaSparkデータフレーム別の列の以前の値と現在の値の最大値を使用して新しい列を作成します

分類Dev

ターゲット列の値を持つ列からpysparkデータフレームを更新します

分類Dev

Pysparkデータフレーム:別の列の値に基づいて列を抽出します

分類Dev

null以外の値を持つ別の列に基づいて、ラムダを使用してデータフレームに列を作成します

分類Dev

パンダのデータフレームの別の列の値に基づいて列を追加します

分類Dev

dfの2つの列の値を持つ2つのデータフレームを、別のデータフレームの1つの列の値と結合します。いくつかの条件に基づいていますか?

分類Dev

パンダ:データフレームの別の列に依存する値を持つデータフレーム列を生成します

Related 関連記事

  1. 1

    Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

  2. 2

    別の列に依存する値を持つ列をデータフレームに追加します

  3. 3

    pandasデータフレームは、リスト要素を持つ別のpandas列に列値を追加します

  4. 4

    リストタイプの列を持つデータフレームに新しい行を追加します

  5. 5

    PySpark:データフレーム内のUUIDを持つ列に基づいて新しい列を追加します

  6. 6

    pysparkデータフレームは左結合し、一定の値を持つ新しい列を追加します

  7. 7

    pysparkデータフレームは左結合し、一定の値を持つ新しい列を追加します

  8. 8

    Pyspark:別のpysparkデータフレームから新しい列を追加します

  9. 9

    pandasデータフレームに一致する値を持つ新しい列を追加します

  10. 10

    rのデータフレームの各列で最大値を持つ行を識別します

  11. 11

    PySparkデータフレームに最も近い値を持つ列を追加します

  12. 12

    R-別のデータフレームの一致する値を使用して、データフレームに新しい列を追加します

  13. 13

    リストとデータフレームに基づいて複数の条件を持つデータフレームに新しい列を追加します

  14. 14

    パンダ:groupbyデータフレームにいくつかの値を持つ新しい列を追加します

  15. 15

    pysparkデータフレーム文字列列から新しい列に最初の数値を取得します

  16. 16

    パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

  17. 17

    データフレーム列のレベルを使用して、各レベルに固有の増分番号を持つ新しい列を追加します

  18. 18

    Pyspark:指定された列の個別の値ごとにデータフレーム値を追加します

  19. 19

    他の列の値を比較した後、新しい列をデータフレームに追加します

  20. 20

    pysparkデータフレームの2つの列をループしながら、新しい列に値を追加する

  21. 21

    Pyspark:1つの列の値に基づいて、あるデータフレームを別のデータフレームから減算します

  22. 22

    他の列から値を追加して、Pandaデータフレームに新しい列を作成します

  23. 23

    ScalaSparkデータフレーム別の列の以前の値と現在の値の最大値を使用して新しい列を作成します

  24. 24

    ターゲット列の値を持つ列からpysparkデータフレームを更新します

  25. 25

    Pysparkデータフレーム:別の列の値に基づいて列を抽出します

  26. 26

    null以外の値を持つ別の列に基づいて、ラムダを使用してデータフレームに列を作成します

  27. 27

    パンダのデータフレームの別の列の値に基づいて列を追加します

  28. 28

    dfの2つの列の値を持つ2つのデータフレームを、別のデータフレームの1つの列の値と結合します。いくつかの条件に基づいていますか?

  29. 29

    パンダ:データフレームの別の列に依存する値を持つデータフレーム列を生成します

ホットタグ

アーカイブ