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

Pandas中Inner Join结果行数异常问题求助

问题分析与解决方法

为什么会出现行数暴增?

你用inner连接得到70万+行,核心原因是关联键(route_city_lazada)在两个DataFrame中存在重复值,触发了笛卡尔积匹配:比如df_actual中某条路线出现N次,df_sla_partner中同一路线出现M次,merge后会生成N*M行对应该路线,最终总行数远超预期。

另外你代码里的关联键是route_city_lazada,但描述里的字段是route,这里大概率是笔误,要确保两个DataFrame的关联键名称一致。

正确实现步骤

1. 先处理df_sla_partner的重复值

因为每条路线应该对应唯一的3PL SLA,先对df_sla_partner去重,保留每个route的唯一SLA记录:

# 按route去重,保留第一条有效记录(也可根据业务逻辑选最后一条或其他规则)
df_sla_partner_unique = df_sla_partner.drop_duplicates(subset=['route'], keep='first')

2. 使用左连接替代内连接

你的预期结果需要保留df_actual中所有运单,无匹配路线的显示NaN,所以用how='left'的左连接:

# 确保关联键名称一致,若两个DataFrame的键名不同,用left_on/right_on指定
df_sla_check = pd.merge(df_actual, df_sla_partner_unique, on=['route'], how='left')

3. 验证结果

可以通过以下代码检查是否符合预期:

# 查看结果行数,应该和df_actual的36000行一致
print(df_sla_check.shape[0])
# 查看无匹配的route记录
print(df_sla_check[df_sla_check['sla_partner (days)'].isna()])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:50:19