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")))