簡體   English   中英

如何從 Pyspark / Python 數據集中先前計算的列中獲取值

[英]How to get value from previous calculated column in Pyspark / Python data set

我正在嘗試在 Pyspark / Python 表中創建一個新列(B)。 新列 (B) 是:列 (A) 的當前值 + 列 (B) 的先前值的總和

所需的 output 示例圖像

`Id   a     b
1    977   977
2    3665  4642
3    1746  6388
4    2843  9231
5    200   9431`

當前列 B = 當前列 A + 先前列 B; 示例第 4 行:9231(B 列)= 2843(A 列)+ 6388(以前的 B 列值)

(對於第一行,因為 B 沒有先前的值,所以它是 0)

請幫我查詢 Python / PySpark 查詢代碼

如果沒有上下文,我可能是錯的,但您似乎試圖對 A 列進行累積總和:

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

df = df.withColumn('B', sf.sum(df.A).over(Window.partitionBy().orderBy().rowsBetween(
Window.unboundedPreceding, 0)))

編輯:

如果您需要根據 B 的最后一個值迭代地添加新行,並假設 dataframe 中的 B 值同時不變,我認為您最好將 B 記住在標准 python 變量中並構建以下行接着就,隨即。

previous_B = 0
# your code to get new A
previous_B += new_A
new_row = spark.createDataFrame([(new_A, previous_B)])
df = df.union(new_row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM