python - 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 进行其他操作。
任何帮助表示赞赏!
解决方案
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))
推荐阅读
- python - 有什么方法可以避免 Pygame Zero 中的 ["screen" is not defined Pylance]?
- elasticsearch - 弹性搜索 - 对嵌套文档进行排序和过滤
- python - 使用 Python 恢复 SAS 输出以进行方差分析
- c# - 无效的转换异常,但构建工作正常
- javascript - 为什么我的间隔仍在计数并且没有停在 0?
- sql - 在 SQL 中对数据进行分组并仅保留不同的值
- php - 如何使用 php 从 XML 中显示图像元素
- python - 如何在 OS X 11.6 (Big Sur) 上构建 Tensorflow 2.8 Wheel
- java - 在简单 POJO 中使用私有数据变量
- ms-access - MS Acces 查询以使用列标题文本填充单元格,其中该列的值 =“是”