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

如何在Pandas crosstab中按行维度为每个类别值展示多指标?

Pandas交叉表结构调整方案

问题说明

当前用pd.crosstab生成的交叉表,会把聚合指标(len、mean)放在列方向重复交叉结构,希望改成按行维度的每个类别值,在行方向纵向展示多指标。

当前代码

pd.crosstab([df.var1, df.var2], [df.var3], values=df.values_var, aggfunc=[len, np.mean])

调整方法

通过调整交叉表的层级索引,把聚合指标从列维度转移到行维度,即可实现期望结构:

方法1:转为多层行索引结构(匹配图示的期望输出)

import pandas as pd
import numpy as np

# 生成原始交叉表
cross_tab = pd.crosstab([df.var1, df.var2], [df.var3], values=df.values_var, aggfunc=[len, np.mean])

# 交换列层级顺序,将var3移到列的第一层,聚合函数移到第二层
cross_tab = cross_tab.swaplevel(axis=1)
# 对列排序,保证结构整齐
cross_tab = cross_tab.sort_index(axis=1)
# 将列的聚合函数层级转为行索引,实现纵向展示
adjusted_tab = cross_tab.stack(level=0)

方法2:转为扁平化长表结构

如果需要更简洁的长格式输出,可进一步展开所有层级:

long_format_tab = cross_tab.stack().stack().reset_index(name='指标值')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:32:08