Apache spark 对行中的唯一值进行计数
测试数据:Apache spark 对行中的唯一值进行计数,apache-spark,pyspark,apache-spark-sql,row,unique,Apache Spark,Pyspark,Apache Spark Sql,Row,Unique,测试数据: df = spark.createDataFrame([(1, 1), (2, 3), (3, 3)], ['c1', 'c2']) df.show() #+---+---+ #| c1| c2| #+---+---+ #| 1| 1| #| 2| 3| #| 3| 3| #+---+---+ 我打算在每个行中对不同的值进行计数,创建一个包含计数的单独列。怎么做 预期结果: #+---+---+---+ #| c1| c2| c3| #+---+---+---+ #|
df = spark.createDataFrame([(1, 1), (2, 3), (3, 3)], ['c1', 'c2'])
df.show()
#+---+---+
#| c1| c2|
#+---+---+
#| 1| 1|
#| 2| 3|
#| 3| 3|
#+---+---+
我打算在每个行中对不同的值进行计数,创建一个包含计数的单独列。怎么做
预期结果:
#+---+---+---+
#| c1| c2| c3|
#+---+---+---+
#| 1| 1| 1|
#| 2| 3| 2|
#| 3| 3| 1|
#+---+---+---+
检查
数组的大小\u distinct
:
import pyspark.sql.functions as F
df.withColumn('c3', F.size(F.array_distinct(F.array(*df.columns)))).show()
+---+---+---+
| c1| c2| c3|
+---+---+---+
| 1| 1| 1|
| 2| 3| 2|
| 3| 3| 1|
+---+---+---+