我有一个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中运行我的代码。
发布于 2018-07-21 04:57:26
这是一个非udf解决方案。在尝试计数的字符上拆分字符串,所需的值是结果数组的长度减去1:
from pyspark.sql.functions import col, size, split
DF.withColumn('Number_Products_Assigned', size(split(col("assigned_products"), r"\+")) - 1)
您必须转义+
,因为它是一个特殊的正则表达式字符。
+--------------------+------------------------+
| assigned_products|Number_Products_Assigned|
+--------------------+------------------------+
|POWER BI PRO+Powe...| 3|
+--------------------+------------------------+
发布于 2018-07-21 04:43:06
from pyspark.sql.functions import col,udf
@udf(returnType='int')
def cnt(s):
return s.count('+')
DF.withColumn('Number_Products_Assigned', cnt(col("assigned_products")))
https://stackoverflow.com/questions/51450004
复制相似问题