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

pandas创建pivot_table时出现KeyError: 'Metric Value'错误如何解决

错误触发原因
  1. 列名读取异常:调用pd.read_csv时使用了skiprows=cnt-1参数,如果该参数跳过了CSV的表头行,pandas会将第一行有效数据识别为列名,导致最终DataFrame不存在名为Metric Value的列。
  2. 分组聚合后列丢失:调用groupby(['Kernel Name','Metric Name']).sum()时,仅数值类型的列会被聚合计算。如果Metric Value列被识别为字符串类型(比如存在非数值的脏数据),聚合后该列会被自动丢弃,dft中不存在该列。
  3. 索引与列混淆:groupby操作的分组键会默认转为结果的索引,而非普通数据列,若调整逻辑时误将索引作为列取值也会触发键错误。
解决方法

步骤1:校验列名读取是否正常

读取数据后先输出列名确认是否符合预期:

df = pd.read_csv(file, skiprows=cnt-1)
print(df.columns.tolist())

如果输出的列名中没有Metric Value,说明skiprows参数设置有误,调整参数确保表头行被正常读取,也可以手动指定列名避免识别错误:

custom_columns = ["ID","Process ID","Process Name","Host Name","Kernel Name","Kernel Time","Context","Stream","Section Name","Metric Name","Metric Unit","Metric Value"]
# 跳过表头行后手动指定列名
df = pd.read_csv(file, skiprows=cnt, names=custom_columns)

步骤2:确认Metric Value列为数值类型

print(df['Metric Value'].dtype)
# 如果为object类型,强制转为数值,异常值设为空
df['Metric Value'] = pd.to_numeric(df['Metric Value'], errors='coerce')
# 删除空值行避免聚合异常
df = df.dropna(subset=['Metric Value'])

步骤3:优化分组透视逻辑

无需分开写groupby和pivot_table,直接用pivot_table即可一次性完成聚合和透视操作:

dfmetric = pd.pivot_table(df, index='Kernel Name', columns='Metric Name', values='Metric Value', aggfunc='sum')

如果需要保留单独分组的步骤,也可以在groupby时设置参数保留分组键为普通列:

dft = df.groupby(['Kernel Name','Metric Name'], as_index=False)['Metric Value'].sum()
dfmetric = pd.pivot_table(dft, index='Kernel Name', columns='Metric Name', values='Metric Value')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:00:01