目前,我正在处理一个大型数据框并面临一个问题。
我想返回表中每个值重复的次数(计数)。
例如:数字 10 重复了两次,所以我想得到数字 2,依此类推...
我的代码是:
from pyspark.sql.types import StructType, StructField, StringType, IntegerType, DateType
right_table_23 = [
("ID1", 2),
("ID2", 3),
("ID3", 5),
("ID4", 6),
("ID6", 10),
("ID8", 15),
("ID9", 10),
("ID10", 5),
("ID2", 5),
("ID3", 8),
("ID4", 3),
("ID2", 2),
("ID3", 4),
("ID4", 3)
]
上表的架构如下:
schema = StructType([
StructField("ID", StringType(), True),
StructField("Count", IntegerType(), True)
])
接下来我使用以下代码创建表格:
df_right_table_23 = spark.createDataFrame(right_table_23, schema)
为了计算重复次数,我使用以下代码:
#It can be implemented in order to find repetitions for a number 2
df_right_table_23.select().where(df_right_table_23.count == 2).count()
但是如果数字范围包括从 2 到 100 的数字,则重写上述代码会很困难且耗时。
是否有可能以某种方式使重复计数的过程自动化?
您无需担心,只需使用PySpark 中
DataFrame
经典的groupBy
和函数,您就可以自动计算每个值的重复次数。count
我必须说你已经在那里了,这里有一个代码片段可以帮助你
在此处显示结果