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

pandas.concat合并DataFrame时行未追加反而聚合的原因咨询

问题根本原因分析

核心原因是待拼接的df1和df2存在重复的行索引,触发了pandas拼接时的索引对齐逻辑:

  • pd.concat()默认不会重置索引,且采用join='outer'的对齐规则。当两个DataFrame有相同的行索引值时,拼接后该索引对应的列会把两个DataFrame的对应值合并成一个Series对象,而非追加为独立行。
  • 比如你示例中,若df1的行索引是[0,1,2],df2的行索引是[0,1],拼接后索引0的a列会变成包含[1,5]的Series,索引1的a列变成包含[2,7]的Series,只有索引2的a列是单个值3,这完全匹配你描述的实际输出。

至于导出CSV显示正常的原因:pandas在导出CSV时会自动展开Series类型的单元格值,所以看起来每个单元格对应单个值,但DataFrame内部的存储结构依然是Series对象,这就导致直接搜索值1时无法匹配——因为你搜索的是单个数值,而目标单元格是一个Series容器,而非单个值。

你提到其他项目中拼接正常,是因为那些场景下的DataFrame要么本身没有重复索引,要么拼接后手动重置了索引(比如添加ignore_index=True参数),避开了索引对齐导致的合并问题。

内容的提问来源于stack exchange,提问作者crime-brulee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:42:36