pyspark - 从 PySpark 数据框列中过滤掉所有规范化的单词
问题描述
我在 PySpark 数据框中有一列带有标准化文本的句子,如下所示:
{product} {number} {number} 于 {date}购买并退回
规范化文本在 {} 标记中,如 {number} 或 {date}
我需要删除所有规范化的单词,使句子变成这样:
购买并退回
有什么建议么?
开始写,但后来卡住了:
data.filter(data.sentence.contains('{'))
解决方案
我认为最简单的方法是在每个字段上使用替换,使用正则表达式捕获 {} 之间的所有内容并将其替换为空字符串。
data = [(1, '{product} {number} {number} was purchased on {date} and
returned')]
df = spark.createDataFrame(data, ["ix", "string"])
# here I created a new column called new_col replacing everything
# that matches the regular expression with an empty string
df = df.withColumn('new_col', F.regexp_replace(F.col("string"), "\\{(.*?)\}", ""))
df.show()
输出:
+---+--------------------+--------------------+
| ix| string| new_col|
+---+--------------------+--------------------+
| 1|{product} {number...| was purchased ...|
+---+--------------------+--------------------+
推荐阅读
- android - 在imageview中设置后如何以编程方式更改色调颜色
- python - 拆分句子中具有特殊“.{{”外观的文本
- hashicorp-vault - 如何使用 Jenkins 配置 Approle 以从保险库生成 STS 令牌
- go - Golang 中的 GRPC 连接管理
- nvidia - 如何轻松为 Google 的容器优化操作系统安装 Nvidia 驱动程序?
- angularjs - Bootstrap 4 'data-toggle' 阻止 AngualrJS 模型更新
- jquery - 从 JQuery 函数返回数组的值为“未定义”
- java - 如何在 RealativeLayout 中将 LinearLayout 居中
- sql - 关于事务数据聚合的oracle sql问题
- c# - 根据 ID 从引用表中检索文字字符串值