Pandas如何groupby然后计算每列中唯一项目的数量?

时间:2018-05-18 20:56:50

标签: python python-3.x pandas numpy

使用此代码:

import pandas

df = pandas.DataFrame()

df['id']     = list('aaabbbcccdddeee')
df['gender'] = list('mmfmfmmffmfmfff') 

我得到一个像DataFrame:

   id gender
0   a      m
1   a      m
2   a      f
3   b      m
4   b      f
5   b      m
6   c      m
7   c      f
8   c      f
9   d      m
10  d      f
11  d      m
12  e      f
13  e      f
14  e      f

如何按df分割id,然后计算每个类别中mf的数量,以便我可以得到如下结果:

    m    f
a   2    1
b   2    1
c   1    2
d   2    1
e   0    3

1 个答案:

答案 0 :(得分:0)

您可以pd.pivot_table使用len

res = df.pivot_table(index='id', columns='gender',
                     aggfunc=len, fill_value=0)

print(res)

gender  f  m
id          
a       1  2
b       1  2
c       2  1
d       1  2
e       3  0