如何从 pyspark 数据框列中的列表中删除特定字符串

Posted

技术标签:

【中文标题】如何从 pyspark 数据框列中的列表中删除特定字符串【英文标题】:How to remove specific strings from a list in pyspark dataframe column 【发布时间】:2021-12-29 10:56:02 【问题描述】:

我有以下 python 列表。

lst=['name','age','country']

Spark 数据框如下。

column_a
name Xxxx, age 23, country aaaa
name yyyy, age 25, country bbbb

我必须将列表与 spark 数据框字符串列进行比较,并从列中删除列表中的值。

预期输出是:

column_a
Xxxx, 23, aaaa
yyyy, 25, bbbb

【问题讨论】:

【参考方案1】:

您可以将regexp_replace'|'.join() 一起使用。第一个通常用于替换子字符串匹配。后者将使用| 加入列表的不同元素。两者的组合将删除列表中存在的列的任何部分。

import pyspark.sql.functions as F

df = df.withColumn('column_a', F.regexp_replace('column_a', '|'.join(lst), ''))

【讨论】:

【参考方案2】:

万一你不想导入任何额外的模块,你也可以使用这样的东西:

df['column_a'] = df['column_a'].apply(lambda x: ''.join([i for i in x.split() if i not in lst]))

【讨论】:

谢谢。我也会检查这个选项 这不是pandas 吗? 哦,我想我没有仔细阅读,我假设OP有一个pandas df,所以pandas操作不会是额外的。你是对的

以上是关于如何从 pyspark 数据框列中的列表中删除特定字符串的主要内容,如果未能解决你的问题,请参考以下文章

从字符串 PySpark 数据框列中删除正则表达式

Pyspark 删除数据框列中的多个字符

根据其他列值从数据框列中的列表中删除最后一个元素

如何将 pyspark 数据框列中的值与 pyspark 中的另一个数据框进行比较

按条件从列表的数据框列中计算和删除元素

如何从 Python 的数据框列中的字符串中删除非字母数字字符?