,可以使用agg
函数结合sum
和col
函数来实现。
首先,需要导入必要的模块和函数:
from pyspark.sql import SparkSession
from pyspark.sql.functions import sum, col
接下来,创建一个SparkSession对象:
spark = SparkSession.builder.getOrCreate()
然后,读取数据并创建一个DataFrame对象:
data = [(1, 10, 20), (2, 30, 40), (3, 50, 60)]
df = spark.createDataFrame(data, ["id", "col1", "col2"])
现在,可以使用agg
函数来计算多个列值的百分比。假设我们想计算col1
和col2
的百分比,可以按照以下步骤进行:
total_col1 = df.agg(sum(col("col1"))).collect()[0][0]
total_col2 = df.agg(sum(col("col2"))).collect()[0][0]
withColumn
函数添加一个新列,该列计算每个值相对于总和的百分比:df_with_percentage = df.withColumn("col1_percentage", col("col1") / total_col1 * 100)\
.withColumn("col2_percentage", col("col2") / total_col2 * 100)
最后,可以查看计算结果:
df_with_percentage.show()
这样,我们就可以在PySpark中计算Spark DataFrame多个列值的百分比了。
关于PySpark和Spark DataFrame的更多信息,可以参考腾讯云的相关产品和文档:
领取专属 10元无门槛券
手把手带您无忧上云