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

使用pd.concat与append拼接DataFrame出现列数翻倍问题求助

Pandas拼接DataFrame列数翻倍的解决方案

根本原因

pd.concat和df.append(该方法已在pandas 2.0+版本弃用)默认按照列名对齐进行拼接,你得到70列说明两个DataFrame的列名不完全一致,两边的列无法一一对应,所以拼接后各成独立列,总列数翻倍。

排查步骤

  1. 先确认列名是否完全一致,执行代码:
print(df1.columns.equals(df2.columns))

如果返回False即可确认是列名不一致导致的问题,执行以下代码查看具体有差异的列名:

# 打印df1有但df2没有的列
print(df1.columns.difference(df2.columns))
# 打印df2有但df1没有的列
print(df2.columns.difference(df1.columns))

修复方案

根据差异原因对应处理后再拼接即可:

  • 列名带多余首尾空格:批量去除列名前后空格
df1.columns = df1.columns.str.strip()
df2.columns = df2.columns.str.strip()
  • 列名大小写不一致:统一列名大小写
# 统一转小写,也可以转大写调用.str.upper()
df1.columns = df1.columns.str.lower()
df2.columns = df2.columns.str.lower()
  • 少数列名命名规则不同:重命名对应列
# 示例:将df2的id列重命名为和df1一致的user_id
df2 = df2.rename(columns={"id": "user_id"})

最终拼接

列名统一后执行拼接即可得到(861,35)的结果:

conc_df = pd.concat([df1, df2], ignore_index=True)

ignore_index=True为可选参数,添加后会重置结果的行索引,避免两个原始DataFrame的行索引重复。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:02