使用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
相关产品推荐
相关产品推荐

