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

Pandas join方法疑问:无匹配为何返回df4数据而非NaN?

问题原因解析

核心误区:误解join()方法on参数的作用

pd.DataFrame.join()默认是按索引(index)完成连接的,你指定的on='col1'并不是让两张表按各自的col1字段匹配,而是:

  • 将左表df1的col1列作为临时连接索引
  • 用这个临时索引去匹配右表df4的原生索引,而非右表的col1字段

具体匹配逻辑拆解

结合你的数据来看:

  • df1的col1值为[1,2,3,4],作为临时索引后,对应右表df4的索引0,1,2,3
  • 匹配时:
    • df1临时索引1 → 匹配df4索引1的行(colA='b', col1='B')
    • df1临时索引2 → 匹配df4索引2的行(colA='c', col1='C')
    • df1临时索引3 → 匹配df4索引3的行(colA='d', col1='D')
    • df1临时索引4 → df4没有对应索引,返回NaN

这就完全对应了你得到的结果:前3行匹配到右表对应索引的行,最后一行无匹配返回NaN。

正确实现预期效果的方法

如果想要按两张表的col1字段进行左连接,应该使用merge()方法:

df1.merge(df4, on='col1', how='left')

此时因两边col1的类型(数值/字符串)和值完全不匹配,所有来自df4的字段都会返回NaN,符合你的预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:35:23