我有一个Spark Dataframe ,其中包含字符串类型的列(assigned_products
),其中包含以下值:
"POWER BI PRO+Power BI (free)+AUDIO CONFERENCING+OFFICE 365 ENTERPRISE E5 WITHOUT AUDIO CONFERENCING"
我想计算+
在字符串中出现的次数,并在新列中返回该值。
我尝试了以下方法,但总是返回错误。
from pyspark.sql.functions import col
DF.withColumn('Number_Products_Assigned', col("assigned_products").count("+"))
我在运行Apache Spark 2.3.1的群集上的Azure Databricks中运行代码。
4条答案
按热度按时间sz81bmfz1#
这里有一个非udf解决方案。将字符串分割为你要计数的字符,你想要的值是结果数组的长度减去1:
你必须转义
+
,因为它是一个特殊的正则表达式字符。goqiplq22#
nmpmafwu3#
Replace将子字符串的出现替换为空字符串。因此,我们可以通过比较替换前后的长度来计算出现次数,如下所示:
使用SparkSQL:
输出:
使用PySpark函数:
输出:
3b6akqbq4#
**Spark 3.4+**有
regexp_count
完整示例: