首页 > 解决方案 > pyspark count 给定列的每一行中的下划线数

问题描述

我正在使用 pyspark 1.5.2 版。我有一个带有“id”列的 pyspark数据框,如下所示:

id
------------
000001_128
000123_1_3 
006745_8
000000_9_7

我想计算DF每行中'_'(下划线)的数量并执行when操作,如果字符串中只有1个下划线,我想添加'_1'作为后缀,否则保留该值照原样。所以想要的结果是:

id          | new_id
------------------------
000001_128  | 000001_128_1
000123_1_3  | 000123_1_3
006745_8    | 006745_8_1
000000_9_7  | 000000_9_7

我正在使用 pyspark.sql.functions 进行其他操作。

任何帮助表示赞赏!

标签: pythondataframepysparkapache-spark-sqlpyspark-sql

解决方案


from pyspark.sql.functions import udf

@udf(returnType='string')
def fmt(s):
    return s if s.count('_')!=1 else f'{s}_1'


df.withColumn('id', fmt(df.id))

推荐阅读