स्पार्क के डेटाफ्रेम के कॉलम में मौजूद अल्फ़ान्यूमेरिक मानों से वर्णमाला को निकालना
डेटाफ्रेम के दो स्तंभ दिखते हैं।
SKU | COMPSKU
PT25M | PT10M
PT3H | PT20M
TH | QR12
S18M | JH
पपड़ी के साथ चिंगारी
मैं सभी वर्णमाला कैसे निकाल सकता हूं और केवल संख्या बरकरार है
अपेक्षित उत्पादन:
25|10
3|20
0|12
18|0
जवाब
Shu
regexp_replace
फ़ंक्शन के साथ प्रयास करें, फिर रिक्त मान को 0 से बदलने के लिए केस when otherwise stateme
एनटी का उपयोग करें ।
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|
+---+-------+
*/
1 jayrythium
आप इसे इस तरह से भी कर सकते हैं।
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 |
+-----+-------+
*/