对行中的唯一值进行计数

0ejtzxu1  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(416)

试验数据:

df = spark.createDataFrame([(1, 1), (2, 3), (3, 3)], ['c1', 'c2'])
df.show()

# +---+---+

# | c1| c2|

# +---+---+

# |  1|  1|

# |  2|  3|

# |  3|  3|

# +---+---+

我打算对每一行中不同的值进行计数,并用count创建一个单独的列。怎么做?
预期结果:


# +---+---+---+

# | c1| c2| c3|

# +---+---+---+

# |  1|  1|  1|

# |  2|  3|  2|

# |  3|  3|  1|

# +---+---+---+
moiiocjp

moiiocjp1#

检查尺寸 array_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|
+---+---+---+

相关问题