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

如何在Python中为两个分类变量创建计数透视表?

问题描述

原始数据结构:

IndexJobYBalance
1AYes1
2BNo2
3ANo5
4ANo0
5BYes4

期望得到的汇总格式:

YesNo
A12
B11

尝试代码:

pivot = df.pivot_table(index =['job'], columns = ['y'], values = ['balance'], aggfunc ='count')

疑问:无法在不指定balance作为values参数的情况下运行透视表,如何得到目标结果?

解决方案

方法1:使用pd.crosstab(推荐)

这是pandas专门用于交叉计数的函数,直接指定行和列维度即可生成目标表格:

import pandas as pd
result = pd.crosstab(df['Job'], df['Y'])

方法2:groupby + value_counts + unstack

先按Job分组,统计每组内Y的取值频次,再通过unstack转换为宽表格式:

result = df.groupby('Job')['Y'].value_counts().unstack(fill_value=0)

方法3:优化pivot_table用法

如果坚持用pivot_table,可以使用aggfunc='size'(统计组内行数,无需指定具体列):

result = df.pivot_table(index='Job', columns='Y', aggfunc='size', fill_value=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:05:27