pyspark sql:如何计算多个条件的行

质量17

经过一些操作,我有一个这样的数据框;

df_new_1 = df_old.filter(df_old["col1"] >= df_old["col2"])
df_new_2 = df_old.filter(df_old["col1"] < df_old["col2"])

print(df_new_1.count(), df_new_2.count())
>> 10, 15

通过调用,我可以像上面那样单独找到行数count()但是我该如何使用pyspark sql row操作来做到这一点即按行汇总。我想看到这样的结果;

Row(check1=10, check2=15)
x

由于您标记了pyspark-sql,因此可以执行以下操作:

df_old.createOrReplaceTempView("df_table")

spark.sql("""

    SELECT sum(int(col1 >= col2)) as check1
    ,      sum(int(col1 < col2)) as check2
    FROM df_table

""").collect()

或使用API​​函数:

from pyspark.sql.functions import expr

df_old.agg(
    expr("sum(int(col1 >= col2)) as check1"), 
    expr("sum(int(col1 < col2)) as check2")
).collect()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章