dataframe的两列看起来像。
SKU | COMPSKU PT25M | PT10M PT3H | PT20M TH | QR12 S18M | JH
斯卡拉Spark如何删除所有字母,只保留数字。。预期产量:
25|10 3|20 0|12 18|0
oyjwcjzk1#
尝试 regexp_replace 功能然后用例 when otherwise stateme nt将空值替换为0。 Example: ```df.show()/*+-----+-------+| SKU|COMPSKU|+-----+-------+|PT25M| PT10M|| PT3H| PT20M|| TH| QR12|| S18M| JH|+-----+-------+
regexp_replace
when otherwise stateme
Example:
df.withColumn("SKU",regexp_replace(col("SKU"),"[a-zA-Z]","")).withColumn("COMPSKU",regexp_replace(col("COMPSKU"),"[a-zA-Z]","")).withColumn("SKU",when(length(trim(col("SKU")))===0,lit(0)).otherwise(col("SKU"))).withColumn("COMPSKU",when(length(trim(col("COMPSKU")))===0,lit(0)).otherwise(col("COMPSKU"))).show()
/*+---+-------+|SKU|COMPSKU|+---+-------+| 25| 10|| 3| 20|| 0| 12|| 18| 0|+---+-------+
nnsrf1az2#
你也可以这样做。
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 | +-----+-------+ * /
2条答案
按热度按时间oyjwcjzk1#
尝试
regexp_replace
功能然后用例when otherwise stateme
nt将空值替换为0。Example:
```df.show()
/*
+-----+-------+
| SKU|COMPSKU|
+-----+-------+
|PT25M| PT10M|
| PT3H| PT20M|
| TH| QR12|
| S18M| JH|
+-----+-------+
df.withColumn("SKU",regexp_replace(col("SKU"),"[a-zA-Z]","")).
withColumn("COMPSKU",regexp_replace(col("COMPSKU"),"[a-zA-Z]","")).
withColumn("SKU",when(length(trim(col("SKU")))===0,lit(0)).otherwise(col("SKU"))).
withColumn("COMPSKU",when(length(trim(col("COMPSKU")))===0,lit(0)).otherwise(col("COMPSKU"))).
show()
/*
+---+-------+
|SKU|COMPSKU|
+---+-------+
| 25| 10|
| 3| 20|
| 0| 12|
| 18| 0|
+---+-------+
nnsrf1az2#
你也可以这样做。