如何对pyspark中整列的值求和
How to sum values of an entire column in pyspark
我有一个包含 900 列的数据框,我需要 pyspark 中每列的总和,因此列表中将包含 900 个值。请让我知道该怎么做?数据有大约 2.8 亿行所有二进制数据。
假设您已经在 Spark DataFrame 中拥有数据,您可以使用 sum
SQL function, together with DataFrame.agg.
例如:
sdf = spark.createDataFrame([[1, 3], [2, 4]], schema=['a','b'])
from pyspark.sql import functions as F
sdf.agg(F.sum(sdf.a), F.sum(sdf.b)).collect()
# Out: [Row(sum(a)=3, sum(b)=7)]
由于在您的情况下您有很多列,因此您可以使用列表理解来避免明确命名列。
sums = sdf.agg(*[F.sum(sdf[c_name]) for c_name in sdf.columns]).collect()
请注意您需要如何使用 * 运算符从列表中解压缩参数。
我有一个包含 900 列的数据框,我需要 pyspark 中每列的总和,因此列表中将包含 900 个值。请让我知道该怎么做?数据有大约 2.8 亿行所有二进制数据。
假设您已经在 Spark DataFrame 中拥有数据,您可以使用 sum
SQL function, together with DataFrame.agg.
例如:
sdf = spark.createDataFrame([[1, 3], [2, 4]], schema=['a','b'])
from pyspark.sql import functions as F
sdf.agg(F.sum(sdf.a), F.sum(sdf.b)).collect()
# Out: [Row(sum(a)=3, sum(b)=7)]
由于在您的情况下您有很多列,因此您可以使用列表理解来避免明确命名列。
sums = sdf.agg(*[F.sum(sdf[c_name]) for c_name in sdf.columns]).collect()
请注意您需要如何使用 * 运算符从列表中解压缩参数。