繁体   English   中英

获取单行值的不同计数 Pyspark DataFrame

[英]Get distinct count of values in single row in Pyspark DataFrame

我正在尝试将字符串列中的逗号分隔值拆分为各个值并计算每个单独的值。

我的数据格式如下:

+--------------------+
|                tags|
+--------------------+
|cult, horror, got...|
|            violence|
|            romantic|
|inspiring, romant...|
|cruelty, murder, ...|
|romantic, queer, ...|
|gothic, cruelty, ...|
|mystery, suspense...|
|            violence|
|revenge, neo noir...|
+--------------------+

我希望结果看起来像

+--------------------+-----+
|                tags|count|
+--------------------+-----+
|cult                |    4|
|horror              |   10|
|goth                |    4|
|violence            |   30|
...

我试过但没有用的代码如下:

data.select('tags').groupby('tags').count().show(10)

我还使用了一个 countdistinct function 也没有用。

我觉得我需要一个 function 用逗号分隔值然后列出它们但不确定如何执行它们。

您可以使用split()拆分字符串,然后使用explode() 最后,groupby 和计数:

import pyspark.sql.functions as F

df = spark.createDataFrame(data=[
    ["cult,horror"],
    ["cult,comedy"],
    ["romantic,comedy"],
    ["thriler,horror,comedy"],
], schema=["tags"])

df = df \
  .withColumn("tags", F.split("tags", pattern=",")) \
  .withColumn("tags", F.explode("tags"))

df = df.groupBy("tags").count()

[Out]:
+--------+-----+
|tags    |count|
+--------+-----+
|romantic|1    |
|thriler |1    |
|horror  |2    |
|cult    |2    |
|comedy  |3    |
+--------+-----+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM