PySpark中如何用分隔符拆分DataFrame列文本?解决拆分异常问题
解决PySpark中拆分price列提取价格数值的问题
你的代码出现问题的核心原因:|是正则表达式的特殊元字符,代表“逻辑或”,直接用它作为split的分隔符时,会将字符串按单个字符拆分,因此getItem(0)只能拿到第一个字符。
方案1:修正split的分隔符(转义特殊字符)
将|转义为正则可识别的分隔符,使用原始字符串r"\|"或者双反斜杠"\\|"即可:
from pyspark.sql.functions import split, col products_price = products_price.withColumn( "new_price", split(col("price"), r"\|").getItem(0) )
方案2:使用regexp_extract提取数字(更稳妥)
如果price列格式存在潜在变化(比如分隔符不是|,或数字位置有差异),推荐用正则提取数字部分,精准匹配开头的整数或小数:
from pyspark.sql.functions import regexp_extract, col products_price = products_price.withColumn( "new_price", regexp_extract(col("price"), r"^\d+(\.\d+)?", 0) )
这个正则表达式的含义是:匹配以数字开头,后续可选小数点和数字的内容,确保只提取价格的纯数值部分。
内容的提问来源于stack exchange,提问作者Marcos Dias
相关产品推荐
相关产品推荐

