Python:具有各自计数的透视表?

Python:具有各自计数的透视表?,python,pandas,pivot-table,Python,Pandas,Pivot Table,我有一个df,上面写着主人的名字、宠物的名字、性别以及是否接种了疫苗。 我想使用数据透视表来获取每个计数 owner pet vacine Gender 0 john dog True M 1 tom dog False F 2 robert cat

我有一个
df
,上面写着主人的名字、宠物的名字、性别以及是否接种了疫苗。 我想使用数据透视表来获取每个计数

                owner      pet       vacine    Gender  

            0   john       dog       True        M

            1   tom        dog       False       F

            2   robert     cat       False       F

            3   joseph     dog       True        F

            4   mary       bird      False       F

            5   lily       cat       True        M
我的结果df将类似于这样

                    pet     Total     vacine     Gender(Male)

            0      dog      3         2           1

            1      cat      2         1           1

            2      bird     1         0           0
'Total'
将显示
pet
列中的宠物总数。
'Gender'
会在'Gender'一栏中显示男性。

以下是一种方法:

df.groupby('pet').agg(
         vacine = ('vacine', 'sum'),
         Total =  ('pet', 'size'), 
         Gender = ('Gender', lambda x: sum(x == 'M'))
).reset_index()

    pet  vacine  Total  Gender
0  bird     0.0      1       0
1   cat     1.0      2       1
2   dog     2.0      3       1

我不知道你如何处理性别栏,这里有两个选择

 df.groupby(['pet']).agg({'vacine': 'sum', 'Gender': lambda x: sum(x == 'M'), 'pet': 'count'})
      vacine  Gender  pet
pet                      
bird     0.0       0    1
cat      1.0       1    2
dog      2.0       1    3

为什么狗的性别是1?有两个F和一个M
df.groupby(['pet']).agg({'vacine': 'sum', 'Gender': 'unique', 'pet': 'count'})
      vacine  Gender  pet
pet                      
bird     0.0     [F]    1
cat      1.0  [F, M]    2
dog      2.0  [M, F]    3