Spark Dataframe – Python – cuenta subcadenas en cadena

Tengo un dataframe de Spark con una columna (“productos_asignados”) de tipo cadena que contiene valores como los siguientes:

"POWER BI PRO+Power BI (free)+AUDIO CONFERENCING+OFFICE 365 ENTERPRISE E5 WITHOUT AUDIO CONFERENCING" 

Me gustaría contar las ocurrencias de "+" en la cadena y devolver ese valor en una nueva columna.

Intenté lo siguiente, pero sigo devolviendo errores.

 from pyspark.sql.functions import col DF.withColumn('Number_Products_Assigned', col("assigned_products").count("+")) 

Estoy ejecutando mi código en Azure Databricks en un clúster que ejecuta Apache Spark 2.3.1.

Aquí hay una solución no udf. Divida su cadena en el carácter que intenta contar y el valor que desea es la longitud de la matriz resultante menos 1:

 from pyspark.sql.functions import col, size, split DF.withColumn('Number_Products_Assigned', size(split(col("assigned_products"), r"\+")) - 1) 

Tienes que escapar del + porque es un carácter regex especial.

 +--------------------+------------------------+ | assigned_products|Number_Products_Assigned| +--------------------+------------------------+ |POWER BI PRO+Powe...| 3| +--------------------+------------------------+ 
 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")))