有人能帮助我如何在pyspark数据框架中实现sql下面的net吗。
(SUM(Cash) /SUM(cash + credit)) * 100 AS Percentage,
df1=df.withColumn("cash_credit",sf.col("cash") + sf.col("credit"))
df1.show(5)
-------------+---------------+ +--------+-------+------+------|
Credit |Cash | MTH|YR | cash_credit |
-------------+---------------+ -------+--------|--------------|
100.00| 400.00| 10| 2019 | 500.00 |
0.00 | 500.00| 6 | 2019 | 500.00 |
200.00| 600.00| 12| 2018 | 800.00 |
0.00 | 0.00 | 10| 2019 | 0.00 |
300.00| 700.00| 7| 2019 | 1000.00 |
-------------+---------------+----------+--------+-------+--- |
我试过下面的Pypark代码。
df2 = df1.groupBy('MTH', 'YR').agg(sf.sum("Cash").alias("sum_Cash"))\
.withColumn("final_column",sf.col("sum_Cash") + sf.col("cash_credit"))\
.withColumn("div",sf.col("sum_Cash")/sf.col("final_column"))\
.withColumn("Percentage",sf.col("div")*100)
但无法执行。下面是错误。
cannot resolve '`cash_credit`' given input columns: [MTH, YR, sum_Cash];;
1条答案
按热度按时间up9lanfz1#
您可以这样修改它,将现金信用从groupby聚合中移除:
我对“现金信用”使用总和聚合,但您可以使用其他聚合函数。