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

基于字典键将字典值分配至DataFrame指定列的报错问题

问题原因与解决方案

问题分析

你写的循环逻辑存在缺陷:遍历字典键值对时,每匹配到一个列就往row列表里追加值,最终row的长度等于字典的键数量,而非DataFrame的列数。当两者数量不一致时,就会触发"mismatched columns"错误——因为DataFrame需要与列数匹配的元素来填充一行。

解决方案

完全不需要手动构造row列表,Pandas原生支持用字典直接匹配列名赋值,缺失的列会自动填充NaN,以下是两种简洁的实现方式:

方法1:直接用loc赋值(最简写法)

import pandas as pd

# 初始化空DataFrame
countries_df = pd.DataFrame(columns=['esp', 'eng', 'mex', 'ger'])
names = {'esp': 'David','eng': 'Adam','mex': 'Jose'}

# 直接用字典赋值,自动匹配列名,缺失列补NaN
countries_df.loc[len(countries_df)] = names

方法2:用Series构造行后合并

如果需要更明确的列索引匹配,可以先创建对应列的Series,再合并到DataFrame:

import pandas as pd

countries_df = pd.DataFrame(columns=['esp', 'eng', 'mex', 'ger'])
names = {'esp': 'David','eng': 'Adam','mex': 'Jose'}

# 创建以DataFrame列为索引的Series,缺失键自动补NaN
new_row = pd.Series(names, index=countries_df.columns)
# 转置后合并到原DataFrame
countries_df = pd.concat([countries_df, new_row.to_frame().T], ignore_index=True)

两种方法最终都会得到符合要求的结果:

espengmexger
DavidAdamJoseNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:09