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

DataFrame.join报object与int64合并错误但merge正常的原因

问题原因分析

核心差异在于join和merge方法中on参数的逻辑完全不同:

  • merge的on='person2'行为:会在两个DataFrame中同时定位名为person2的列,将这两列作为连接键进行匹配。你的两个DataFrame的person2列均为object类型,类型匹配,因此可以正常执行。
  • join的on='person2'行为:仅指定调用方(group[['person2']])使用person2列作为连接键,而被连接对象(df_returns[['person2']])会用自身的索引来参与匹配,而非它的person2列。

报错提示中提到的“object和int64列合并”,说明df_returns[['person2']]的索引是int64类型,和调用方person2列的object类型不兼容,因此触发ValueError。你之前用dtypes仅检查了列的类型,未关注索引类型,才造成了误解。可以执行以下代码验证索引类型:

df_returns[['person2']].index.dtype

结果应该为int64。

如果想用join实现和merge相同的效果,需要先将被连接对象的person2列设为索引,确保类型匹配:

group[['person2']].join(df_returns[['person2']].set_index('person2'), on='person2')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:52:37