我是个新手,正在尝试用数据来练习。我在scala中使用databricks,对于数据集,我使用kaggle的fifa 19完整球员数据集。其中一列名为"Weight“,它包含如下数据
+------+
|Weight|
+------+
|136lbs|
|156lbs|
|136lbs|
|... |
|... |
+------+
我想以这样的方式更改列,使其看起来像这样
+------+
|Weight|
+------+
|136 |
|156 |
|136 |
|... |
|... |
+------+
有谁可以帮我修改spark sql中的列值吗?
发布于 2019-05-16 12:00:51
您可以创建新列并使用regexp_replace
dataFrame.withColumn("Weight2", regexp_replace($"Weight" , lit("lbs"), lit("")))
发布于 2019-05-17 19:25:09
下面是使用正则表达式和regexp_extract内置函数的另一种方法:
import org.apache.spark.sql.functions.regexp_extract
val df = Seq(
"136lbs",
"150lbs",
"12lbs",
"30kg",
"500kg")
.toDF("weight")
df.withColumn("weight_num", regexp_extract($"weight", "\\d+", 0))
.withColumn("weight_unit", regexp_extract($"weight", "[a-z]+", 0))
.show
//Output
+------+----------+-----------+
|weight|weight_num|weight_unit|
+------+----------+-----------+
|136lbs| 136| lbs|
|150lbs| 150| lbs|
| 12lbs| 12| lbs|
| 30kg| 30| kg|
| 500kg| 500| kg|
+------+----------+-----------+
https://stackoverflow.com/questions/56160196
复制相似问题