simple pivot table of pandas dataframe

蹲街弑〆低调 提交于 2020-06-27 11:07:29

问题


I'm trying to do a seemingly very simple task. Given a dataframe:

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 

I'd like to count the number of records with the unique combination of 'co' and 'sh' values and output as a table with rows ['g','r','b'] and columns ['c','s','r']

    c   s   r
g   1   0   2
r   0   1   1
b   1   0   1

Can it be done using pivot_table?

Thank you,


回答1:


It can be done more simply using 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

You can do it with pivot_table, but it will give you NaN instead of 0 for missing combos. You need to specify len as the aggregating function:

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


来源:https://stackoverflow.com/questions/27738398/simple-pivot-table-of-pandas-dataframe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!