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

pandas垂直拼接dataframe报Reindexing only valid with uniquely valued Index错误如何解决

pandas垂直拼接InvalidIndexError错误修复方案

错误根源

你报错的核心原因是aaaaa_tmp_df存在重复列名:你给它设置列名时,最后两列都命名为了Tilt_X,导致这个DataFrame的列索引不唯一。pandas做垂直拼接时会先对齐列,遇到不唯一的索引对象就会抛出Reindexing only valid with uniquely valued Index objects错误。
此外两个待拼接的DataFrame列名不匹配(aaaaa_tmp_df最后两列都是Tilt_X,bbb_tmp_df最后两列是Tilt_X和Tilt_Y),就算不报错拼接结果也不符合预期,你给出的预期结果表头最后两列都是Tilt_X属于笔误,实际值对应Tilt_X和Tilt_Y。

修复方法

直接修正aaaaa_tmp_df的列名定义,把最后一个重复的Tilt_X改为Tilt_Y,保证两个待拼接的DataFrame列名完全一致、且无重复列名即可。

修正后核心代码

# 仅修改aaaaa_tmp_df的列名定义部分即可
aaaaa_tmp_df.columns=['TimeStamp',
                      'Input',
                      'X',
                      'Y',
                      'Time',
                      'Distance',
                      'Speed',
                      'Pressure',
                      'Tilt_X',
                      'Tilt_Y'] # 把原来的Tilt_X改为Tilt_Y

bbb_tmp_df.columns=['TimeStamp',
                    'Input',
                    'X',
                    'Y',
                    'Time',
                    'Distance',
                    'Speed',
                    'Pressure',
                    'Tilt_X',
                    'Tilt_Y']


aaaaa = aaaaa_tmp_df[aaaaa_tmp_df['Input'] == 'aaaaa']
bbb = bbb_tmp_df[bbb_tmp_df['Input'] == 'bbb']

# 如果要保留原来的行号(16、17、26这类),把ignore_index改为False即可
all_df = pd.concat([aaaaa,bbb],axis = 0, ignore_index=True)

额外排查点

你报错日志里的拼接是三个对象pd.concat([touch,pen,ptp],axis = 0, ignore_index=True),如果修改后还报错,检查另外两个DataFrame是否也存在重复列名、列名不匹配的问题即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:15:04