我有一个名为“df”的数据框,它在“帐户名”字段的 groupby 中,此列中的每个条目的成本可以相同或不同,我只需要在它不同时添加它。这是原来的df:
accountname | namespace | cost
account001 | ns1 | 11
account001 | ns1 | 11
account001 | ns1 | 11
account001 | ns1 | 11
account001 | ns2 | 10
account001 | ns2 | 10
account002 | ns3 | 50
account002 | ns3 | 50
account002 | ns3 | 50
account003 | ns4 | 5
“帐户名”字段中唯一具有不同成本的条目是“帐户001”,我只需要添加 11 + 10 一次。我需要得到这样的东西:
accountname | namespace | cost | cost_to_pay
account001 | ns1 | 11 | 21
account001 | ns1 | 11 | 21
account001 | ns1 | 11 | 21
account001 | ns1 | 11 | 21
account001 | ns2 | 10 | 21
account001 | ns2 | 10 | 21
account002 | ns3 | 50 | 50
account002 | ns3 | 50 | 50
account002 | ns3 | 50 | 50
account003 | ns4 | 5 | 5
知道怎么做吗?提前致谢。
您可以使用distinct
, group byaccountname
和 sum the cost删除重复项,并使用以下方法连接回原始数据帧accountname
:
import pyspark.sql.functions as F
df2 = (df.dropDuplicates(['accountname', 'namespace', 'cost'])
.groupBy('accountname')
.agg(F.sum('cost').alias('cost_to_pay'))
.join(df, 'accountname')
.select('accountname', 'namespace', 'cost', 'cost_to_pay')
)
df2.show()
+-----------+---------+----+-----------+
|accountname|namespace|cost|cost_to_pay|
+-----------+---------+----+-----------+
| account001| ns1| 11| 21|
| account001| ns1| 11| 21|
| account001| ns1| 11| 21|
| account001| ns1| 11| 21|
| account001| ns2| 10| 21|
| account001| ns2| 10| 21|
| account002| ns3| 50| 50|
| account002| ns3| 50| 50|
| account002| ns3| 50| 50|
| account003| ns4| 5| 5|
+-----------+---------+----+-----------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句