我在資料框中有重復的行,PySpark我想sum根據一列中的重復條目將它們全部組合成每列一行。
當前表
Deal_ID Title Customer In_Progress Deal_Total
30 Deal 1 Client A 350 900
30 Deal 1 Client A 360 850
50 Deal 2 Client B 30 50
30 Deal 1 Client A 125 200
30 Deal 1 Client A 90 100
10 Deal 3 Client C 32 121
嘗試的 PySpark 代碼
F.when(F.count(F.col('Deal_ID')) > 1, F.sum(F.col('In_Progress')) && F.sum(F.col('Deal_Total'))))
.otherwise(),
預期表
Deal_ID Title Customer In_Progress Deal_Total
30 Deal 1 Client A 925 2050
50 Deal 2 Client B 30 50
10 Deal 3 Client C 32 121
uj5u.com熱心網友回復:
我認為您需要按具有重復行的列進行分組,然后匯總金額。我認為這可以解決您的問題:
df = df.groupBy(['Deal_ID', 'Title', 'Customer']).agg({'In_Progress': 'sum', ' Deal_Total': 'sum'})
uj5u.com熱心網友回復:
- 你有一個 SQL 標簽,所以它會在那里作業
select
deal_id,
title,
customer,
sum(in_progress) as in_progress,
sum(deal_total) as deal_total
from <table_name>
group by 1,2,3
否則,您可以group by在 python pandas / dataframe 中使用相同的函式并應用于您的資料幀:
- 您必須將需要聚合的列作為串列傳遞
- 那么你需要指定聚合型別和你想加起來的列
df = df.groupBy(['deal_id', 'title', 'Customer']).agg({'in_progress': 'sum', ' deal_total': 'sum'})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527618.html
