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

如何对比Pandas两列地址字段 判断是否包含相同数字或数字集合

解决方案

你当前的实现问题出在使用str.extract仅能提取每段地址中第一个匹配到的数字,无法覆盖所有数字匹配的场景。可以通过提取所有数字转为集合、判断集合交集的方案实现需求,具体实现如下:

完整代码

import pandas as pd
import numpy as np

# 初始化原始数据集
data = [['Road 76', 'Road 12, 55'], ['Road 11, 7-9', 'Road 11, 5'], ['Road 25', 'Street 5']]
df_original = pd.DataFrame(data, columns = ['Address 1', 'Address 2'])

# 分别提取两列地址的所有数字,转为集合格式
addr1_num_set = df_original['Address 1'].str.findall(r'\d+').apply(set)
addr2_num_set = df_original['Address 2'].str.findall(r'\d+').apply(set)

# 判断两个集合是否存在交集,生成匹配结果列
df_original['Number Match?'] = np.where(addr1_num_set & addr2_num_set, 1, 0)

# 查看结果
print(df_original)

逻辑说明

  • str.findall(r'\d+') 会提取字符串中所有连续的数字序列,返回列表格式,不会遗漏任何数字(包括7-9这类格式中拆分出来的7、9两个数字)
  • 用apply(set)将数字列表转为集合后,直接通过集合交集运算符&判断两列是否存在公共数字,空集判定为不匹配,非空集判定为匹配,刚好对应0和1的结果要求
  • 该方案不会修改原始的地址列内容,避免覆盖原始数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:18:03