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

时间:2015-01-02 06:43:00

标签: python pandas dataframe pivot-table

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

  

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 个答案:

答案 0 :(得分:5)

使用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