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

Pandas透视表重新索引问题:如何添加缺失的'E'相关数据

解决透视表缺失指定类别问题

问题原因

你创建new数据集时,筛选了Marks2 <= 50的数据,但原数据中'E'对应的所有Marks2值(60、65、70)都大于50,导致'E'被完全过滤出new,后续生成的透视表temp里自然没有'E'的索引和列。直接用reindex虽然能添加上'E',但需要确保行列都包含所有需要的类别。

解决方案

先从原数据中提取所有出现过的Name1和Name2值,生成完整的行列标签列表,再对透视表重新索引,就能保留'E'的位置:

import pandas as pd

# 原数据
df1 = pd.DataFrame({'Name1':['A','Q','A','B','B','C','C','C','E','E','E'],
                    'Name2':['B','C','D','C','D','D','A','B','A','B','C'],'Marks2':[10,20,6,50, 88,23,140,9,60,65,70]})

# 筛选数据
new = df1.loc[(df1['Marks2'] <= 50)]

# 生成透视表
temp = new.pivot_table(index="Name1", columns="Name2", values="Marks2")

# 获取所有出现过的姓名,确保包含'E'
all_names = sorted(set(df1['Name1'].unique()) | set(df1['Name2'].unique()))

# 重新索引,指定行列都用完整的姓名列表
matrix = temp.reindex(index=all_names, columns=all_names)

最终输出

执行后得到的透视表如下(空值显示为NaN):

Name1ABCDEQ
ANaN10.0NaN6.0NaNNaN
BNaNNaN50.0NaNNaNNaN
CNaN9.0NaN23.0NaNNaN
ENaNNaNNaNNaNNaNNaN
QNaNNaN20.0NaNNaNNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:40:53