gpt4 book ai didi

pyspark - 在 pyspark 中的案例总和

转载 作者:行者123 更新时间:2023-12-05 01:45:41 26 4
gpt4 key购买 nike

我正在尝试将 hql 脚本转换为 pyspark。我正在努力如何在 groupby 子句之后的聚合中实现 case when 语句的总和。例如。

dataframe1 = dataframe0.groupby(col0).agg(
SUM(f.when((col1 == 'ABC' | col2 == 'XYZ'), 1).otherwise(0)))

在 pyspark 中可以吗?执行此类语句时出现错误。谢谢

最佳答案

您可以使用 withColumn 创建一个包含您想要求和的值的列,然后对其进行聚合。例如:

from pyspark.sql import functions as F, types as T

schema = T.StructType([
T.StructField('key', T.IntegerType(), True),
T.StructField('col1', T.StringType(), True),
T.StructField('col2', T.StringType(), True)
])

data = [
(1, 'ABC', 'DEF'),
(1, 'DEF', 'XYZ'),
(1, 'DEF', 'GHI')
]

rdd = sc.parallelize(data)
df = sqlContext.createDataFrame(rdd, schema)



result = df.withColumn('value', F.when((df.col1 == 'ABC') | (df.col2 == 'XYZ'), 1).otherwise(0)) \
.groupBy('key') \
.agg(F.sum('value').alias('sum'))

result.show(100, False)

打印出这个结果:

+---+---+
|key|sum|
+---+---+
|1 |2 |
+---+---+

关于pyspark - 在 pyspark 中的案例总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40762066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com