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

如何判断df1的number列值是否为df2对应列值的左侧前缀(Python)

判断DataFrame中值是否为另一个DataFrame值的严格左侧前缀并匹配对应值

我有两个DataFrame:

import pandas as pd
df1=pd.DataFrame({'number': ['14578', '45621', '1564']})
df2=pd.DataFrame({'number': ['1457891521', '123456215', '15643']})

我需要判断df1['number']中的每个值是否是df2['number']中某个值的严格左侧前缀(即前缀长度小于目标值长度),并得到如下结果:

number full number
0  14578  1457891521
1  45621            0
2   1564       15643

解决方案

可以通过自定义函数结合apply方法实现需求,具体代码如下:

import pandas as pd

df1 = pd.DataFrame({'number': ['14578', '45621', '1564']})
df2 = pd.DataFrame({'number': ['1457891521', '123456215', '15643']})

# 提取df2的编号列表,方便后续遍历
df2_numbers = df2['number'].tolist()

def match_full_number(prefix):
    for num in df2_numbers:
        # 严格前缀条件:前缀长度小于目标值长度,且目标值以前缀开头
        if len(prefix) < len(num) and num.startswith(prefix):
            return num
    # 无匹配项时返回'0'
    return '0'

# 为df1新增匹配结果列
df1['full number'] = df1['number'].apply(match_full_number)

print(df1)

关键说明

  • 使用str.startswith()快速判断字符串前缀匹配关系
  • 增加长度判断len(prefix) < len(num),确保是严格左侧前缀(避免前缀与目标值完全相等的情况)
  • 未找到匹配项时返回字符串'0',与期望输出格式一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:25:25