首页 > 解决方案 > 从火花数据框列中存在的字母数字值中删除字母

问题描述

数据框的两列看起来像。

SKU   | COMPSKU

PT25M | PT10M
PT3H  | PT20M
TH    | QR12
S18M  | JH

斯卡拉火花

我怎样才能删除所有字母并且只保留数字..

预期输出:

25|10
3|20
0|12
18|0

标签: scalaapache-spark

解决方案


你也可以这样做。

df.withColumn(
    "SKU",
    when(regexp_replace(col("SKU"),"[a-zA-Z]","")==="",0
        ).otherwise(regexp_replace(col("SKU"),"[a-zA-Z]","")) 
).withColumn(
    "COMPSKU",
    when(regexp_replace(col("COMPSKU"),"[a-zA-Z]","")==="", 0
        ).otherwise(regexp_replace(col("COMPSKU"),"[a-zA-Z]",""))
).show()
/*
        +-----+-------+
        |  SKU|COMPSKU|
        +-----+-------+
        |  25 |  10   |
        |   3 |  20   |
        |   0 |  12   |
        |  18 |   0   |
        +-----+-------+
*/

推荐阅读