【发布时间】:2021-08-19 21:22:52
【问题描述】:
这是我的测试数据
test = spark.createDataFrame([
("2018-06-03",2, 4, 4 ),
("2018-06-04",4, 3, 3 ),
( "2018-06-03",8, 1, 1),
("2018-06-01",3, 1, 1),
( "2018-06-05", 3, 2, 0),
])\
.toDF( "transactiondate", "SalesA", "SalesB","SalesC")
test.show()
我想添加一个按行总计列和对应于每个销售类别(A、B 和 C)的总计列的百分比
期望的输出:
+---------------+------+------+------+----------+------+------+------+
|transactiondate|SalesA|SalesB|SalesC|TotalSales|Perc_A|Perc_B|Perc_C|
+---------------+------+------+------+----------+------+------+------+
| 2018-06-03| 2| 4| 4| 10| 0.2| 0.4| 0.4|
| 2018-06-04| 4| 3| 3| 10| 0.4| 0.3| 0.3|
| 2018-06-03| 8| 1| 1| 10| 0.8| 0.1| 0.1|
| 2018-06-01| 3| 1| 1| 5| 0.6| 0.2| 0.2|
| 2018-06-05| 3| 2| 0| 5| 0.6| 0.4| 0.0|
+---------------+------+------+------+----------+------+------+------+
如何在 pyspark 中做到这一点?
编辑:即使我添加更多项目,我也希望代码具有适应性,即如果我还有一个列 salesD,代码应该创建总计和百分比列。 (即不应该对列进行硬编码)
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql