java - 在删除最后一个特殊字符的数据框 java 上应用函数或操作
问题描述
我有数据进入数据框的第一列“代码”,如下所示
'101-23','23-00-11','NOV-11-23','34-000-1111-1'
现在我想在子字符串之后为“代码”列设置如下值。
101,23-00,NOV-11,34-000-1111
以上可以通过java代码轻松实现,如下所示
String str ="23-00-11";
int index=str.lastindex("-");
String ss=str.substring(0,index);
这使
'23-00'
如何处理数据框并使用 spark 1.6.2 java 1.8 编写 udf 或应用于数据框?
我试过df.withcolumn("code",substring("code",0,1))
但没有找到找到最后一个索引的方法。请帮忙。
解决方案
from pyspark.sql.functions import *
newDf = df.withColumn('_c0', regexp_replace('_c0', '@', ''))\
.withColumn('_c1', regexp_replace('_c1', "'", ''))\
.withColumn('_c2', regexp_replace('_c2', '!', ''))
newDf.show()
更新
import org.apache.spark.sql.functions._
val df11 = Seq("'101-23','23-00-11','NOV-11-23','34-000-1111-1'").toDS()
df11.show()
//df11.select(col("a"), substring_index(col("value"), ",", 1).as("b"))
val df111=df11.withColumn("value", substring(df11("value"), 0, 10))
df111.show()
结果 :
+--------------------+
| value|
+--------------------+
|'101-23','23-00-1...|
+--------------------+
+----------+
| value|
+----------+
|'101-23','|
+----------+
import org.apache.spark.sql.functions._
df11: org.apache.spark.sql.Dataset[String] = [value: string]
df111: org.apache.spark.sql.DataFrame = [value: string]
推荐阅读
- python - 当一个对象与另一个对象碰撞时从矩阵中减去值
- c - 如何使用 C API 迭代表中的项目
- windows - 不允许使用弹性搜索位置参数
- django - Django迁移错误地应用
- c# - 如何获取 WCF 服务的单个 wsdl 文件?
- javascript - 由于使用模块时出现不允许的 MIME 类型(“text/html”)错误,从“http://127.0.0.1:1234/Ball”加载模块被阻止
- pyspark - 在 PySpark 中,如何使用从一列派生的值从另一列获取数据?
- html - 如何在不破坏代码的情况下添加悬停图像过渡?
- vim - 如何动态切换(Vimplug)插件?
- windows - 我需要从一个数组循环到另一个新数组