我想基于PySpark中的模式匹配将所有条目提取为列表

苏拉什·阿鲁纳萨拉姆

我有一个名为标签的字段。它包含一个或多个以size_开头的值。

图案为size_

例如 :

+---------------------------------------------+
|                tags                         |
+---------------------------------------------+
|The size available are size_10 and size_100. |
|                                             |
|The size available are size_10               |
|The size available are size_20               |

我想将值单独提取为数组(即)

+----------------------------------------------------------+
|                tags                         |size        |
+----------------------------------------------------------+
|The size available are size_10 and size_100. |[10, 20]    |
|                                             |    []      |
|The size available are size_10               |   [10]     | 
|The size available are size_20               |   [20]     |

你能帮我解决...

Shubham Jain

上面代码的Python等效项是:

df.withColumn('d',f.split(f.regexp_replace(f.concat_ws(',',f.array_except(f.split('data',' '),f.split(f.regexp_replace('data','(size_\d+)',''),' ')))
                                  ,"[^0-9$,]",""),',')).show(20,False)

如果数据集不是很大,您也可以使用udf

import re
from pyspark.sql.functions import udf

extract = udf(lambda s: list(map(lambda x: x.split('_')[1] if len(x)>0 else x,re.findall(r'(size_\d+)', s))), ArrayType(StringType()))

df.withColumn('values', extract('data')).show()

两种情况下的输出

+--------------------+---------+
|                data|   values|
+--------------------+---------+
|The size availabl...|[10, 100]|
|The size availabl...|     [10]|
|                    |       []|
|The size availabl...|     [20]|
|             size_10|     [10]|
+--------------------+---------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将一行中的所有模式匹配提取到列表中

如果列中的所有条目都与Pandas中列表中的项匹配,则删除列

为什么我的浮点值总是为 postgres 查询中的所有条目返回 0?

SQL Server将字段中的所有条目修剪为相同大小

哈希表中的列表丢失所有条目

如何加速 Postgres 查询,在该查询中我想查询日期范围内的所有条目

我如何查看man中的所有条目?

将列表条目的字典值设置为列表中的所有字典重复

如果我通过将搜索字段保留为空白并点击saarch按钮,并且所有条目都需要一个HTML按钮,为什么还要显示mysql databese中的所有数据?

将与正则表达式匹配的所有模式过滤为PySpark中RDD中的单独行

KDB + / Q:如何在字典中查找与某个值匹配的所有条目?

电子邮件验证(本机反应)。对于所有条目,将结果返回为“无效”

std :: vector <bool>是否保证默认将所有条目设置为false?

如何对与查找表匹配的所有条目求和?

如何删除 MySQL 表中不在唯一索引列表中的所有条目?

检查特征库中矩阵中的所有条目是否为零

提取匹配特定模式的所有值

如果有很多条目,为什么“代号中的列表”不显示所有条目?

根据条目字段为所有条目在榛树广播中设置TTL /记录有效期

删除列表中特定重复编号的所有条目的功能

查找数组中属性之一为空的所有条目

将Textpad或Notepad ++中的所有正则表达式匹配项导出为列表

python删除列表中值的所有条目

如果条件为1,如何求和所有条目

为表的所有条目设置随机名称

我想提取有条件的缺席

将所有具有匹配前缀的文件移动到基于csv列表的文件夹中

提取模式匹配项/从模式中除去行中的所有内容

将框架中的所有条目小部件绑定到键