首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pyspark与数组的运算符不同

Pyspark与数组的运算符不同
EN

Stack Overflow用户
提问于 2021-10-13 20:38:29
回答 1查看 42关注 0票数 0

我有一个快餐连锁店的列表(超过300行)。在我的数据中,每个快餐连锁店的名称可能是McDonald's, Mcdonald's 100, etc.,我不能测试是否完全相等,因为那样我就会错过麦当劳100。我想测试并查看每个快餐连锁店是否出现在我的表中我的列中的任何位置。

数据帧:

代码语言:javascript
运行
复制
ID Name
1 Mcdonad's
2 Mcdonald's 100
3 Subway 600

餐厅列表:

代码语言:javascript
运行
复制
["Mcdonald's", "Subway", etc.]

我如何排除我的数据框中不包括餐厅列表中的餐厅的所有内容?

EN

回答 1

Stack Overflow用户

发布于 2021-10-13 21:17:57

您可以使用contains检查一个字符串是否与另一个字符串的一部分匹配。这不包括像Mcdonad's这样的拼写错误,但它可以处理前导符号和尾随符号。对于模糊匹配,您可以查看levenshtein距离。

代码语言:javascript
运行
复制
from pyspark.sql.types import StringType
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()


fast_food_chains = ["Mcdonald's", "Subway", ]

# create pyspark df from list
df_chains = spark \
    .createDataFrame(fast_food_chains, StringType()) \
    .withColumnRenamed('value', 'chain_name')

df = spark.createDataFrame(
    [
        (1, "Mcdonad's"),
        (2, "Mcdonald's 100"),
        (3, "Subway 600")

    ],
    ["id", "chain_name"]
)

# join dfs using contains
df \
    .join(df_chains, df.chain_name.contains(df_chains.chain_name)) \
    .show()
+---+--------------+----------+
| id|    chain_name|chain_name|
+---+--------------+----------+
|  2|Mcdonald's 100|Mcdonald's|
|  3|    Subway 600|    Subway|
+---+--------------+----------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69562029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档