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

如何基于复合索引中的列透视DataFrame?求更优雅方案

更优雅的透视解决方案

你遇到的KeyError: 'ts'是因为pivot的index/columns参数要求传入列名,而你已经把ts和code设为了复合索引,它们不再属于DataFrame的列,因此无法被pivot识别。以下是几种更简洁的解决方法:

方法1:直接用原始DataFrame透视(最推荐)

完全没必要提前设置复合索引,直接基于原始的三列数据执行透视即可:

df_pivot = df.pivot(index='ts', values='count', columns='code')

方法2:将索引还原为列后透视

如果已经执行了复合索引的设置,可通过reset_index()将索引转回列,再执行透视:

df_count = df_count.reset_index()
df_pivot = df_count.pivot(index='ts', values='count', columns='code')

方法3:利用复合索引的unstack方法

针对已设置复合索引的DataFrame,unstack可以直接将指定级别的索引转为列,实现类似透视的效果:

# 将code索引级别转为列,ts作为行索引
df_pivot = df_count.unstack(level='code')['count']

以上三种方法都能避免复制列的冗余操作,其中方法1是最直接高效的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:52:33