【问题标题】:pyspark sql: how to count the row with mutiple conditionspyspark sql:如何计算具有多个条件的行
【发布时间】:2019-12-27 20:41:20
【问题描述】:

经过一些操作,我得到了这样的数据框;

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 sqlrow 操作来做到这一点。即按行聚合。我想看到这样的结果;

Row(check1=10, check2=15)

【问题讨论】:

  • 向我们展示你目前编写的 pyspark 代码。
  • 这是@J_H,这是我尝试过的; df= df_new_1.groupBy("col1").agg({"col1":"count"}).collect().. 但没有给出答案。例如测试条件1

标签: python-3.x pyspark bigdata row pyspark-sql


【解决方案1】:

由于您标记了 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 2013-02-26
    • 2021-02-24
    • 2014-08-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多