Pandas数据帧的简单透视表

8
我正在尝试完成一个看似非常简单的任务。 给定一个数据框:

daf = pd.DataFrame({'co':['g','r','b','r','g','r','b','g'], 'sh':['c','s','r','r','r','s','c','r']})

    co  sh
0   g   c 
1   r   s 
2   b   r 
3   r   r 
4   g   r 
5   r   s
6   b   c
7   g   r 
我想要计算以'co'和'sh'值的唯一组合为基础的记录数量,并将其输出为表格,行为['g','r','b'],列为['c','s','r']。
    c   s   r
g   1   0   2
r   0   1   1
b   1   0   1
可以使用 pivot_table 完成吗?
谢谢,
1个回答

10

使用 pandas.crosstab 可以更简单地完成此操作:

>>> pandas.crosstab(d.co, d.sh)
sh  c  r  s
co         
b   1  1  0
g   1  2  0
r   0  1  2

你可以使用 pivot_table 完成此操作,但是对于缺失的组合,它将返回 NaN 而不是 0。你需要指定 len 作为聚合函数:
>>> d.pivot_table(index='co', columns='sh', aggfunc=len)
sh   c  r   s
co           
b    1  1 NaN
g    1  2 NaN
r  NaN  1   2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接