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

pd.concat合并DataFrame时行首出现NaN值、数据右移如何解决?

问题原因

pd.concat 默认按列索引名称对齐进行纵向拼接:

  • df_1的列索引为 [1,2,3],不存在列索引0
  • df_2的列索引为 [0,1,2],不存在列索引3
    拼接后会自动合并所有列索引得到 [0,1,2,3] 共4列,df_1所有行没有列0的值所以填充NaN,视觉上表现为原df_1的记录整体右移。另外你原有代码的排序逻辑未赋值/加inplace=True,不会修改new_df本身。
解决方案

根据使用场景选择对应方案即可:

方案1:统一两个DataFrame的列索引后拼接(最常用,适合两表对应列含义一致的场景)

如果df_1的第1列和df_2的第0列是同一个含义,直接重命名列索引保持一致后再拼接:

import pandas as pd

# 把df_1的列索引修改为和df_2一致
df_1.columns = [0,1,2]
# ignore_index参数可重置行索引,避免重复
new_df = pd.concat([df_1, df_2], ignore_index=True)
# 排序需要赋值给新变量或者加inplace=True才会生效
new_df = new_df.sort_values(new_df.columns[0], ascending=True)

方案2:按列位置拼接不匹配列名(适合不需要保留原有列名的场景)

直接读取两个表的数值拼接后再转为DataFrame,完全忽略原有列索引:

import pandas as pd
import numpy as np

new_df = pd.DataFrame(np.concatenate([df_1.values, df_2.values]), columns=[0,1,2])
new_df = new_df.sort_values(0, ascending=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:15:03