You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何基于address列内容删除branch_name列词汇并生成新列

Pandas 门店名称列清洗实现方案

现有示例 DataFrame 结构如下:

branch_name        | address
Mcdonald's - BGC   | 2nd str. BGC
Jollibee - Taguig  | BGC, Taguig
...

需要实现的清洗规则为:根据每行address列包含的词汇,删除branch_name列中的对应内容,同时移除除撇号外的所有特殊字符,最终生成新的store_name列存储结果,预期输出如下:

branch_name        | address       | store_name
Mcdonald's - BGC   | 2nd str. BGC  | Mcdonald's
Jollibee - Taguig  | BGC, Taguig   | Jollibee
...

具体实现代码

第一步:导入依赖并构造测试数据

import pandas as pd
import re

# 构造示例数据
df = pd.DataFrame({
    "branch_name": ["Mcdonald's - BGC", "Jollibee - Taguig"],
    "address": ["2nd str. BGC", "BGC, Taguig"]
})

第二步:定义清洗函数

def clean_store_name(row):
    # 提取address列所有词汇,转小写去重避免大小写匹配问题
    addr_words = set(re.findall(r'[a-zA-Z0-9]+', row['address'].lower()))
    # 先替换branch_name里的特殊字符(撇号除外)为空格
    raw_branch = re.sub(r"[^\w']+", ' ', row['branch_name']).strip()
    # 拆分branch_name词汇,过滤掉属于address关键词的内容
    remain_words = [word for word in raw_branch.split() if word.lower() not in addr_words]
    # 拼接剩余内容得到最终门店名
    return ' '.join(remain_words).strip()

第三步:应用函数生成新列

df['store_name'] = df.apply(clean_store_name, axis=1)

兼容场景调整说明

如果你的门店名称包含中文,只需把清洗函数中特殊字符替换的正则规则调整为r"[^\u4e00-\u9fa5a-zA-Z0-9']+",即可兼容中文清洗需求。


内容的提问来源于stack exchange,提问作者Tenserflu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:42:01