经过一些操作,我有一个这样的数据框;
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)
由于您标记了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] 删除。
我来说两句