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

向空Pandas DataFrame追加数据时列不匹配问题咨询

Pandas追加数据列错位问题的原因与解决办法

问题原因

你执行dftest.append([testdata])时,[testdata]是嵌套列表结构,Pandas会将其视为一行数据,但因为你的testdata是普通列表,没有和原DataFrame的A-G列名绑定,Pandas会默认用0-6作为这行数据的列名,导致原列匹配不到值显示NaN,同时新增0-6列填充数据。

解决方法

方法1:用字典映射列名

把testdata改成字典,键对应原DataFrame的列名,让Pandas精准匹配列:

import pandas as pd
dftest = pd.DataFrame(columns=["A","B","C","D","E","F","G"])
testdata = {"A":1, "B":2, "C":3, "D":4, "E":5, "F":6, "G":7}
dftest = dftest.append(testdata, ignore_index=True)

ignore_index=True是为了重置索引,避免出现重复索引问题。

方法2:将列表转为同列名的DataFrame

把testdata包装成DataFrame,指定和原表一致的列名再追加:

import pandas as pd
dftest = pd.DataFrame(columns=["A","B","C","D","E","F","G"])
testdata = [1,2,3,4,5,6,7]
dftest = dftest.append(pd.DataFrame([testdata], columns=dftest.columns), ignore_index=True)

推荐方式(Pandas 2.0+)

由于append方法在Pandas 2.0及以上版本已被弃用,更推荐使用pd.concat:

import pandas as pd
dftest = pd.DataFrame(columns=["A","B","C","D","E","F","G"])
testdata = [1,2,3,4,5,6,7]
testdata_df = pd.DataFrame([testdata], columns=dftest.columns)
dftest = pd.concat([dftest, testdata_df], ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:25:35