apache-spark - 将最后一位数字分隔到pyspark中的新列
问题描述
我从 pyspark 开始......我有以下问题,我正在尝试将每个 id 的最后一位数字分隔到一个新列中:
|---------------------|------------------|
| Name | Number |
|---------------------|------------------|
| Bob | 34789 |
|---------------------|------------------|
对此:
|---------------------|------------------|---------------------|
| Name | Number_1 | Number_2 |
|---------------------|------------------|---------------------|
| Bob | 3478 | 9 |
|---------------------|------------------|---------------------|
有什么建议么?
解决方案
看一下这个。您可以先使用regexp_extract
获取最后一位数字来创建新列,然后使用regexp_replace
空字符串 '' 替换最后一位数字。
from pyspark.sql import functions as F
df.show()
# +----+------+
# |name|number|
# +----+------+
# | bob| 34789|
# +----+------+
df.withColumn("number_1",F.regexp_replace(F.col('number'),r'(\d$)','')).withColumn("number_2", F.regexp_extract(F.col('number'), r'(\d$)',1)).withColumn("number_1", F.regexp_replace(F.col('number'), r'(\d$)', '')).drop(F.col('number')).show()
# +----+--------+--------+
# |name|number_1|number_2|
# +----+--------+--------+
# | bob| 3478| 9|
# +----+--------+--------+
推荐阅读
- android - 如果项目中有多个模块,如何缩短 Android Studio 中的包?
- spring - 如何在一个端点使用不同的请求体?
- git - 如何在 Git 中获取 master 分支的默认值?
- javascript - 将动作添加到动态创建的选项选择
- python - maya,python,按材质名称命名 obj
- c# - 如果 Dockefile 不在带有 csproj 的目录中,则无法在 Visual Studio 2019 中调试容器
- javascript - 渲染 React 状态对象的问题
- sql - sql oracle - 不同的缺失表达式
- python - YOLO OpenCV Python 无法显示来自 RTSP 的视频
- listview - 从 coredata SwiftUI 中删除多行