You need to enable JavaScript to run this app. Python使用concat和append拼接pandas数据集出现shape错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python使用concat和append拼接pandas数据集出现shape错误如何解决

问题根因

  • 列数异常:两个DataFrame的列名不完全匹配,pd.concat()和append()默认按列名对齐合并,列名不同的列会单独生成新列,最终列数为两个df列名的并集,因此从188涨到309。
  • 行数校验:4045+10505=14550,你预期的14750属于计算偏差,若确认实际应该有14750行,可检查csv读取阶段的参数配置。

解决代码

  1. 首先保证两个DataFrame列名一致
    如果是读取csv时默认把第一行数据识别为表头导致列名不一致,读取时增加header=None参数,统一生成数值列名:
import pandas as pd
# 读取时指定无表头,自动生成0~187的统一列名
df1 = pd.read_csv('ptbdb_normal.csv', header=None)
df2 = pd.read_csv('ptbdb_abnormal.csv', header=None)

如果已经读取完成,直接手动对齐列名即可:

# 把df2的列名修改为和df1完全一致
df2.columns = df1.columns
  1. 按行拼接数据集
    推荐使用pd.concat()实现(append方法在pandas 2.0及以上版本已正式弃用),拼接时添加ignore_index=True重置行索引,避免原索引重复带来的后续问题:
df_con = pd.concat([df1, df2], ignore_index=True)
# 验证输出shape
print(df_con.shape)

拼接完成后输出的shape应为(14550, 188)。


行数异常排查方案

如果输出行数和你的预期不符,可按以下方向排查:

  • 检查pd.read_csv()的on_bad_lines参数,若设置为skip会自动丢弃格式错误的行,可修改为on_bad_lines='warn'查看是否有异常行被丢弃
  • 确认是否配置了skiprows、nrows等限制读取行数的参数
  • 直接打开原始csv文件统计行数,确认数据源本身的行数是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:54:03