Jos*_*dez 10 python string apache-spark pyspark
我有一个包含字符串类型的列(“assigned_products”)的 Spark 数据框,其中包含如下值:
"POWER BI PRO+Power BI (free)+AUDIO CONFERENCING+OFFICE 365 ENTERPRISE E5 WITHOUT AUDIO CONFERENCING"
Run Code Online (Sandbox Code Playgroud)
我想计算"+"字符串中的出现次数并在新列中返回该值。
我尝试了以下操作,但一直返回错误。
from pyspark.sql.functions import col
DF.withColumn('Number_Products_Assigned', col("assigned_products").count("+"))
Run Code Online (Sandbox Code Playgroud)
我正在运行 Apache Spark 2.3.1 的群集上的 Azure Databricks 中运行我的代码。
pau*_*ult 11
这是一个非 udf 解决方案。在您尝试计算的字符上拆分字符串,您想要的值是结果数组的长度减 1:
from pyspark.sql.functions import col, size, split
DF.withColumn('Number_Products_Assigned', size(split(col("assigned_products"), r"\+")) - 1)
Run Code Online (Sandbox Code Playgroud)
你必须转义,+因为它是一个特殊的正则表达式字符。
+--------------------+------------------------+
| assigned_products|Number_Products_Assigned|
+--------------------+------------------------+
|POWER BI PRO+Powe...| 3|
+--------------------+------------------------+
Run Code Online (Sandbox Code Playgroud)
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")))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6946 次 |
| 最近记录: |