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

pandas横向拼接DataFrame出现行列数不符合预期问题排查

问题原因

pd.concat(axis=1)做横向拼接时,默认逻辑是按行索引的标签值做对齐匹配,根本不是按行从上到下的物理位置直接拼,这就是你结果维度完全不对的核心原因:

  • 你手里的两个DataFrame虽然物理行数都是217,但行索引存在异常:要么两个表的索引值无法一一对应,要么索引里存在重复的标签。
  • 拼接默认走外连接逻辑,会把两个表索引里出现过的所有值都保留,遇到同一个索引标签在两边出现多次的情况,会直接做笛卡尔积生成多行匹配结果,最后行数就从预期的217涨到了256;列数从预期的14变成22,也是索引错位匹配连带导致的异常。
正确实现方法

如果你的需求就是忽略原有索引,把两个表按从上到下的行顺序逐行横向拼接,先把两个表的索引重置为从0开始的连续整数、丢弃旧索引,再执行拼接即可:

# 重置索引,drop=True表示不把原索引保留为单独列
df_1_reset = df_1.reset_index(drop=True)
df_2_reset = df_2.reset_index(drop=True)
# 执行横向拼接
df = pd.concat([df_1_reset, df_2_reset], axis=1, ignore_index=True)

执行后得到的结果固定为217行、14列,完全符合逐行对齐拼接的预期。

注意:不要图省事跳过重置索引的步骤,哪怕两个表行数完全一致,只要索引顺序错乱、存在重复值,直接拼接要么会出现行数暴涨,要么会导致数据和行错位对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:27:17