Pyspark Pyspaprk计数符合条件的出现次数

Pyspark Pyspaprk计数符合条件的出现次数,pyspark,group-by,count,conditional-statements,Pyspark,Group By,Count,Conditional Statements,在pyspark中,我有每个国家的df数据,我想计算值小于100时发生的次数。以及值小于1000时出现的次数 国家/地区值 美国10 150美元 美国102 15000美元 Ru 13 Ru 175 Ru 122 Ind 14000 印度2000 Ind 780 Ind 900 工业区55 美国有1次低于100。千分之三。 Ru在100以下有1个,在1000以下有3个 等等 我如何获得这些信息?是否有办法按国家分组并计算满足条件的事件?如果是这样的话,每个条件是否可能有所不同。例如一次按100

在pyspark中,我有每个国家的df数据,我想计算值小于100时发生的次数。以及值小于1000时出现的次数

国家/地区值
美国10
150美元
美国102
15000美元
Ru 13
Ru 175
Ru 122
Ind 14000
印度2000
Ind 780
Ind 900
工业区55
美国有1次低于100。千分之三。 Ru在100以下有1个,在1000以下有3个 等等


我如何获得这些信息?是否有办法按国家分组并计算满足条件的事件?如果是这样的话,每个条件是否可能有所不同。例如一次按100,另一次按1000?

使用窗口按
国家划分,您可以有条件地对计数求和

from pyspark.sql import Window
w = Window.partitionBy('Country')

df.withColumn('100', sum(when(col('value') <= 100, 1)).over(w)) \
  .withColumn('1000', sum(when(col('value') <= 1000, 1)).over(w)) \
  .show()

+-------+-----+---+----+
|Country|value|100|1000|
+-------+-----+---+----+
|     Ru|   13|  1|   3|
|     Ru|  175|  1|   3|
|     Ru|  122|  1|   3|
|     Us|   10|  1|   3|
|     Us|  150|  1|   3|
|     Us|  102|  1|   3|
|     Us|15000|  1|   3|
|    Ind|14000|  1|   3|
|    Ind| 2000|  1|   3|
|    Ind|  780|  1|   3|
|    Ind|  900|  1|   3|
|    Ind|   55|  1|   3|
+-------+-----+---+----+
从pyspark.sql导入窗口
w=窗口分区依据(“国家”)

df.withColumn('100',sum(when(col('value'))嘿,回答得很好,很简洁。有没有办法在里面做两个条件?这对我来说不起作用。例如,当((col('value'))时,两列满足这个条件我当然试过了。它给了我错误。因为它在一个总和内,它告诉我要把它包装起来,或者什么都可以。你如何在最后重试结果?我怎么能把每个组的数字作为一个数字?我需要每个组的任何随机行都会给我结果,但我实际上怎么做呢?