pyspark/pandas 的新手需要幫助。
我有一個看起來像這樣的表 表 1
-----------------
Id ID2 qty
-----------------
A1 S1 5
A2 S1 5
A3 S2 10
----------------
我有一個看起來像這樣的表 表 2
-----------------
ID2 totalQty
-----------------
S1 15
S2 10
----------------
我的結果應該是
-----------------
ID2 qty
-----------------
S1 5
S2 0
----------------
我嘗試加入兩個表,我能夠找到小睡為零的行,但不知道如何找到數量過多的那一行
result_df = table1.join(table2, "ID2", "left").withColumn('remainingQty', F.col('totalQty') - F.col('qty'))
我得到的 result_df 是
----------------------------------------
Id ID2 qty totalQty remainingQty
----------------------------------------
A1 S1 5 15 10
A2 S1 5 15 10
A3 S2 10 10 0
-----------------------------------------
我知道上表的前兩行是錯誤的。在這方面需要幫助。
uj5u.com熱心網友回復:
首先需要在table1中求和qty,ID2然后再與table2連接,如下:
from pyspark.sql import functions as F
result_df = table1.groupBy('ID2').agg(F.sum('qty').alias('qty')) \
.join(table2, 'ID2') \
.select(F.col('ID2'), (F.col('totalQty') - F.col('qty')).alias('qty'))
使用您的輸入 table1 和 table2,您將獲得以下內容result_df:
--- ---
|ID2|qty|
--- ---
|S2 |0 |
|S1 |5 |
--- ---
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/384969.html
