apache-spark - 给定输入列无法解析“Column_Name”:错误:Pyspark Dataframes
问题描述
有人可以帮助我如何在 Pyspark Dataframe 中的 sql 下实现。
(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 |
-------------+---------------+----------+--------+-------+--- |
我在 Pyspark 代码下尝试过。
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];;
解决方案
您可以像这样修改它以将 cash_credit 带出 groupby-aggregation:
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)
我对“cash_credit”使用 sum 聚合,但您可以使用其他聚合函数。
推荐阅读
- python - 从 api 响应中解析嵌套 json 的最佳方法
- c - malloc() 到底是做什么的?
- javascript - 如何在没有 console.log() 的情况下记录 JavaScript 变量的值?
- javascript - 如何在初始页面加载之前加载 CSS 数据主题以防止主题之间闪烁?
- python - django项目中实时聊天的问题
- python - 尝试解决地图和 lambdas 的问题
- java - 如何优化此解决方案以避免超出时间限制?
- excel - Excel 日期根据另一个日期在下个月递增
- sql - 连接条件,中间 SQL
- python - 设置 ttk.Combobox 的样式