Python 数据帧的简单透视表

Python 数据帧的简单透视表,python,pandas,dataframe,pivot-table,Python,Pandas,Dataframe,Pivot Table,我试图做一件看起来很简单的事情。 给定一个数据帧: daf=pd.DataFrame({'co':['g','r','b','r','g','r','b','g'],'sh':['c','s','r','r','s','c','r']}) 我想计算具有“co”和“sh”值的唯一组合的记录数,并将其输出为一个表,其中包含行['g'、'r'、'b']和列['c'、's'、'r'] 可以使用pivot_表完成吗 谢谢,使用熊猫可以更简单地完成。交叉表: >>> pandas.cros

我试图做一件看起来很简单的事情。 给定一个数据帧:

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

我想计算具有“co”和“sh”值的唯一组合的记录数,并将其输出为一个表,其中包含行['g'、'r'、'b']和列['c'、's'、'r']

可以使用pivot_表完成吗


谢谢,

使用熊猫可以更简单地完成。交叉表:

>>> 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
>>> pandas.crosstab(d.co, d.sh)
sh  c  r  s
co         
b   1  1  0
g   1  2  0
r   0  1  2
>>> 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