Pyspark Pyspaprk计数符合条件的出现次数
在pyspark中,我有每个国家的df数据,我想计算值小于100时发生的次数。以及值小于1000时出现的次数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
国家/地区值
美国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'))时,两列满足这个条件我当然试过了。它给了我错误。因为它在一个总和内,它告诉我要把它包装起来,或者什么都可以。你如何在最后重试结果?我怎么能把每个组的数字作为一个数字?我需要每个组的任何随机行都会给我结果,但我实际上怎么做呢?