如何解决删除pyspark中的特定前导零
我要删除pyspark中一列的前导零的特定数目吗?
+-----------+-----------------+
|subcategory|output |
+-----------+-----------------+
| 00EEE| 00EEE|
| 0000EEE| 000EEE|
| 0EEE| EEE|
+-----------+-----------------+
类似地,如果我想从零开始,前导零为2,则输出应为:
+-----------+-----------------+
|subcategory|output |
+-----------+-----------------+
| 00EEE| EEE|
| 0000EEE| 000EEE|
| 0EEE| 0EEE|
+-----------+-----------------+
有什么办法吗?
解决方法
我创建了一个通用函数来删除前导“ 0”,具体取决于您想要的数字:
from pyspark.sql import functions as F
def remove_lead_zero(col,n):
"""
col: name of the column you want to modify
n: number of leading 0 you want to remove
"""
return F.when(
F.regexp_extract(col,"^0{{{n}}}[^0]".format(n=n),0) != "",F.expr("substring({col},{n},length({col}))".format(col=col,n=n+1))
).otherwise(F.col(col))
df.withColumn("output",remove_lead_zero("subcategory",2)).show()
+-----------+-------+
|subcategory| output|
+-----------+-------+
| 00EEE| EEE|
| 0000EEE|0000EEE|
| 0EEE| 0EEE|
+-----------+-------+
df.withColumn("output",1)).show()
+-----------+-------+
|subcategory| output|
+-----------+-------+
| 00EEE| 00EEE|
| 0000EEE|0000EEE|
| 0EEE| EEE|
+-----------+-------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。