Pyspark中的条件字符串操作
我有一个Pyspark数据帧,其中包括一列MSN(字符串类型),如下所示:Pyspark中的条件字符串操作,pyspark,Pyspark,我有一个Pyspark数据帧,其中包括一列MSN(字符串类型),如下所示: +------+ | Col1 | +------+ | 654- | | 1859 | | 5875 | | 784- | | 596- | | 668- | | 1075 | +------+ 如您所见,值小于1000(即三个字符)的条目末尾有一个-字符,总共有4个字符 我想去掉-字符,这样我就可以得到如下结果: +------+ | Col2 | +------+ | 654 | | 1859 | | 5875
+------+
| Col1 |
+------+
| 654- |
| 1859 |
| 5875 |
| 784- |
| 596- |
| 668- |
| 1075 |
+------+
如您所见,值小于1000(即三个字符)的条目末尾有一个-
字符,总共有4个字符
我想去掉-
字符,这样我就可以得到如下结果:
+------+
| Col2 |
+------+
| 654 |
| 1859 |
| 5875 |
| 784 |
| 596 |
| 668 |
| 1075 |
+------+
我尝试了以下代码(其中df
是包含该列的数据帧,但似乎不起作用:
if df.Col1[3] == "-":
df = df.withColumn('Col2', df.series.substr(1, 3))
return df
else:
return df
有人知道怎么做吗?您可以使用F.regexp\u replace将列中的-替换为空字符串(“”) 参见下面的代码
df.withColumn("Col2", F.regexp_replace("Col1", "-", "")).show()
+----+----+
|Col1|Col2|
+----+----+
|589-| 589|
|1245|1245|
|145-| 145|
+----+----+
下面是使用
.substr()
方法的解决方案:
df.withColumn(“Col2”,F.when(F.col(“Col1”))substr(4,1)=“-”,
F.col(“Col1”).子条款(1,3)
).否则(
F.col(“Col1”).show()
+----+----+
|Col1 | Col2|
+----+----+
|654-| 654|
|1859|1859|
|5875|5875|
|784-| 784|
|596-| 596|
|668-| 668|
|1075|1075|
+----+----+