算上pyspark

时间:2017-07-25 19:12:09

标签: python apache-spark dataframe pyspark

我有一个带有“id”(字符串)列的火花数据帧df和另一列“values”(字符串数组)。我想创建另一个名为count的列,其中包含每个id的值计数。

df看起来像 -

id        values
1fdf67    [dhjy1,jh87w3,89yt5re]
df45l1    [hj098,hg45l0,sass65r4,dh6t21]

结果应该如下 -

id        values                          count
1fdf67    [dhjy1,jh87w3,89yt5re]          3
df45l1    [hj098,hg45l0,sass65r4,dh6t21]  4

我正在尝试如下 -

df= df.select(id,values).toDF(id,values,values.count())

这似乎不符合我的要求。

1 个答案:

答案 0 :(得分:0)

请使用size功能:

from pyspark.sql.functions import size

df = spark.createDataFrame([
    ("1fdf67", ["dhjy1", "jh87w3", "89yt5re"]),
    ("df45l1", ["hj098", "hg45l0", "sass65r4", "dh6t21"])],
    ("id", "values"))

df.select("*", size("values").alias("count")).show(2, False)

+------+---------------------------------+-----+
|id    |values                           |count|
+------+---------------------------------+-----+
|1fdf67|[dhjy1, jh87w3, 89yt5re]         |3    |
|df45l1|[hj098, hg45l0, sass65r4, dh6t21]|4    |
+------+---------------------------------+-----+