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

Pandas1:1关联两个DataFrame时返回2000行而非1000行如何解决?

问题解决方案

问题根因

你当前merge得到2000行的核心原因是两个DataFrame的key_column实际无法匹配:虽然你确认数据是1:1对应,但大概率是key_column存在数据类型不一致、首尾空格/不可见字符的问题,导致匹配时两个表的key没有交集,outer join后就会生成两张表各行独立的结果。

解决步骤

第一步:先验证key匹配情况

运行以下代码确认两个表的key交集数量,如果输出不是1000,即可确认是key匹配异常:

common_keys = set(df_1['key_column']) & set(df_2['key_column'])
print(len(common_keys))

第二步:统一清洗key列

对两个表的key列做统一的类型转换和空格清洗,消除匹配障碍:

# 统一转为字符串并去除首尾空格、不可见字符
df_1['key_column'] = df_1['key_column'].astype(str).str.strip()
df_2['key_column'] = df_2['key_column'].astype(str).str.strip()

第三步:重新执行合并

清洗后执行inner join即可得到预期的1000行35列结果:

df_3 = pd.merge(df_1, df_2, on="key_column", how='inner')
# 验证结果
print(df_3.shape) # 预期输出 (1000, 35)

备选方案

如果你可以确认两个表的行顺序完全一一对应,可以直接按行拼接后删除重复的key列,不需要依赖key匹配:

df_3 = pd.concat([df_1, df_2.drop(columns=['key_column'])], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:00