scala - 如何从spark中的字符串列中提取数字部分?
问题描述
我是新来的火花并试图用数据来练习。我在scala中使用databricks,对于数据集,我使用来自kaggle的fifa 19完整玩家数据集。名为“重量”的列之一,其中包含看起来像的数据
+------+
|Weight|
+------+
|136lbs|
|156lbs|
|136lbs|
|... |
|... |
+------+
我想以这样的方式更改列
+------+
|Weight|
+------+
|136 |
|156 |
|136 |
|... |
|... |
+------+
任何人都可以帮助我如何更改 spark sql 中的列值。
解决方案
这是使用 regex 和 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|
+------+----------+-----------+
推荐阅读
- django - 无法访问正在运行的 django 服务器?
- java - 向实用程序类映射注入依赖项
- r - 如何从具有四舍五入数字的数据框中将表格导出为 PNG
- python - 我无法在 Windows 上安装 kivy。命令行返回回溯错误
- html - 垂直对齐标记内标签失败
- html - 如何在 React-bootstrap 中有一个固定在顶部但不在小视口上的导航栏?
- url - 我购买了域名,如何在该域名下拥有两个以上的网址?
- javascript - 在 JISON 中解析单个产品
- javascript - Vue 组件未安装或渲染且没有错误消息
- java - 如何使 JAXB 实例化泛型超类的子类列表元素