当前位置: 首页 > 知识库问答 >
问题:

从pyspark dataframe中的列返回字母数字值

谷梁卓
2023-03-14

我有一个pyspark dataframe DF。它有2列,如下面所示的示例输入。我想创建一个新的输出数据表,其中包含一个新列'COL3',该列只包含COL2中字符串的字母数字值。

regexp_extract('('+col1+')','[^[A-Za-z0-9] ]', 0)
df.show()


+----+----+
|col1|col2|
+----+----+
|1   |ab& |
+----+----+
|2   |efg |
+----+----+

输出

+----+----+
|col1|col3|
+----+----+
|1   |ab  |
+----+----+
|2   |efg |
+----+----+

共有1个答案

郑乐池
2023-03-14

在Spark中使用regexp_replace()函数。

示例:

df.show()
#+----+----+
#|col1|col2|
#+----+----+
#|   1| ab&|
#|   2| efg|
#+----+----+

from pyspark.sql.functions import *

df.withColumn("col3",regexp_replace("col2",'[^A-Za-z0-9]','')).show()
#+----+----+----+
#|col1|col2|col3|
#+----+----+----+
#|   1| ab&|  ab|
#|   2| efg| efg|
#+----+----+----+
 类似资料:
  • 问题内容: 我正在寻找一个php函数,该函数将接受一个输入字符串,并通过去除所有仅保留字母数字的特殊字符来返回其净化版本。 我需要另一个功能相同但仅返回字母字符AZ的函数。 任何帮助,不胜感激。 问题答案: 警告:请注意,英语不仅限于AZ。 尝试执行以下操作删除az,AZ和0-9以外的所有内容: 如果字母数字的定义包括外语字母和过时的脚本,则您将需要使用Unicode字符类。 尝试以下操作仅保留A

  • 问题内容: 我有一个表,该表的列具有复合的alpha-then-numeric值,如下所示: 我需要在查询中将值提取为单独的列,而数字部分在整数数据类型的列中。 如果两个值的开始位置和结束位置一致,则可以使用来完成工作,因为您可以看到数字部分的开始位置有所不同。 是否有一种优雅的方法可以解决此问题,还是必须通过使用正则表达式匹配来分隔个案或在大量的个案语句中汇总使用每个可能的起点的一系列并集来完成

  • 尝试将字母数字字符串中的数字增加一个数字n,并返回结果,增加的数字在字符串索引中的相同位置。如果数字为9,则输出应换行为0、1、2、3、,。。。。依此类推到9`ie String input=“abc123de45”n=2 print=“abc345de67”

  • 我有一个使用函数的string参数并传递给返回最长单词的函数的代码。 我想知道是否可以使用,然后使用索引访问每个字母表,这样我就可以知道字符串中有多少个单词,然后比较它们,这样我就可以返回最长的单词。 我是这样开始的。它与典型数组很好地工作,但典型数组需要预定义的大小。

  • 问题内容: 我正在尝试检索以SQlite中任何非字母字符开头的所有列,但似乎无法使其正常工作。我目前有此代码,但它返回每一行: 有没有办法检索TestNames的第一个字符不属于字母的所有行? 问题答案: 你只去第一个角色吗? substr函数(在某些SQL语言中也可以称为left())将帮助您隔离字符串中的第一个char。 编辑:也许在sqllite中的substr(TestNames,1,1)

  • 问题内容: 我想将以下字符串转换为提供的输出。 我还没有发现,将处理特殊字符,如任何解决方案,,,等。 基本上,我只是想摆脱所有不是字母数字的东西。这是我尝试过的… 尝试多个步骤 结果 任何帮助,将不胜感激。 工作解决方案: 问题答案: 删除非字母数字字符 以下是/正确的正则表达式,用于从输入字符串中去除非字母数字字符: 请注意,这等效于-它包括下划线字符。要删除下划线,请使用例如: 输入格式错误