无法解析给定输入列的“`column\u name`”:错误:pyspark dataframes

vatpfxk5  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(603)

有人能帮助我如何在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];;
up9lanfz

up9lanfz1#

您可以这样修改它,将现金信用从groupby聚合中移除:

df2 = df1.groupBy('MTH', 'YR').agg(sf.sum("Cash").alias("sum_Cash"),sf.sum("cash_credit").alias("cash_credit"))\
         .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)

我对“现金信用”使用总和聚合,但您可以使用其他聚合函数。

相关问题