庞大数据帧的简单数据透视表

Dav*_*voz 4 python pivot-table dataframe pandas

我正在尝试做一个看似非常简单的任务.给定一个数据帧:

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 
Run Code Online (Sandbox Code Playgroud)

我想用'co'和'sh'值的唯一组合来计算记录的数量,并输出为包含行['g','r','b']和列['c'的表格, 'S', 'R']

    c   s   r
g   1   0   2
r   0   1   1
b   1   0   1
Run Code Online (Sandbox Code Playgroud)

可以使用pivot_table完成吗?

谢谢,

Bre*_*arn 6

它可以更简单地使用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
Run Code Online (Sandbox Code Playgroud)

你可以使用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
Run Code Online (Sandbox Code Playgroud)