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

使用find_partitions识别行中重复字符串时出现异常问题咨询

排查find_partitions返回全-1的问题

核心排查步骤

  • 先查same_restaurant匹配逻辑
    这是最可能的问题根源:你的匹配函数可能没正确识别重复项。比如:

    • 没处理字符串大小写、空格(比如"KFC"和"kfc"没被判定为匹配)
    • 匹配条件过于苛刻(比如要求名称、地址、电话完全一致,但实际重复项存在细微差异)
    • 函数逻辑错误,始终返回False,导致没有任何匹配对,find_partitions只能给所有行分配默认的-1

    快速测试方法:挑你确定是重复的两行数据,手动传入函数验证:

    # 取两行预期重复的数据
    row1 = restaurants.iloc[0]
    row2 = restaurants.iloc[1]
    print(same_restaurant(row1, row2))  # 正常应该返回True
    
  • 验证find_partitions的功能完整性
    如果是你自己实现的find_partitions,检查是否正确处理了传递性重复(比如A匹配B、B匹配C,A/B/C应归为同一组);如果用的是第三方库的函数,确认参数传递是否符合要求,版本是否和示例一致。

    可以用极小测试集验证函数是否正常工作:

    test_df = pd.DataFrame({
        'name': ['麦当劳', '麦当劳', '肯德基'],
        'address': ['北京XX路', '北京XX路', '上海XX路']
    })
    
    def test_match(row1, row2):
        return row1['name'] == row2['name'] and row1['address'] == row2['address']
    
    test_df['group_id'] = find_partitions(df=test_df, match_func=test_match)
    print(test_df)
    

    要是这个测试用例能正确分组(前两行同ID,第三行不同),说明函数本身没问题,问题出在你的业务数据或same_restaurant函数上;如果测试用例也返回全-1,那就是find_partitions的实现有问题。

  • 检查数据加载是否正常
    用restaurants.head()查看前几行,确认列名、数据类型、内容是否符合预期——比如名称列是不是字符串类型,有没有空值、乱码导致匹配逻辑失效,有没有因为分隔符错误导致列错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:52:11