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

Python pandas中df.pivot透视表自定义列名的实现方法

错误原因

pandas的pivot方法中,columns参数需要传入源DataFrame中已存在的列,用来作为透视生成列的分组依据。你直接传入自定义的列名['x0','x1','x2'],但源数据中没有这些列,因此触发KeyError。

解决方法

你需要先为每个Id分组下的行生成组内序号(对应你要的x后缀的下标),再执行透视,最后重命名列即可:

  1. 先按Id和Date排序,保证同个Id下的Value顺序符合预期,同时生成组内序号列
# 按Id和时间排序,避免数据顺序混乱导致结果不对
df = df.sort_values(['Id', 'Date']).reset_index(drop=True)
# 生成每个Id分组内的行序号,从0开始计数
df['col_index'] = df.groupby('Id').cumcount()
  1. 执行透视操作
res = df.pivot(index='Id', columns='col_index', values='Value')
  1. 重命名列名
  • 如果需要生成x0到x2共3列:
res.columns = [f'x{i}' for i in range(3)]
  • 如果需要生成x0到x49共50列,只需修改range的参数即可:
res.columns = [f'x{i}' for i in range(50)]
# 如果部分Id的记录数不足50,会自动生成NaN值,可按需填充缺失值,比如填充为0:
# res = res.fillna(0)

执行后res就是你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:36:03