pandas groupby计数为零时如何在结果中包括零值

时间:2019-08-21 13:30:32

标签: python python-3.x pandas group-by count

请考虑任何不使用 pivot_table() unstack()

的解决方案

对于以下数据框:

import pandas as pd

df = pd.DataFrame({
    'name': ['Mason', 'Ali', 'Si', 'Pedram'],
    'continent': ['Europe', 'Asia', 'Asia', 'Asia'],
    'blood_type': ['AB', 'O+', 'AB', 'AB']
})

哪个是

    name     continent  blood_type
0   Mason    Europe     AB
1   Ali      Asia       O+
2   Si       Asia       AB
3   Pedram   Asia       AB

以下分组依据计数:

df.groupby(['continent', 'blood_type']).count()

会产生:

                           name
continent   blood_type  
Asia        AB             2
            O+             1
Europe      AB             1

相反,如何包含零值计数(如下表)? (通过不使用 pivot_table unstack

                           name
continent   blood_type  
Asia        AB             2
            O+             1
Europe      AB             1
            O+             0

1 个答案:

答案 0 :(得分:2)

pandas到0.25(或0.24.2,现在不确定)开始,如果按类别(pd.Categorical)分组,它将显示最终计数中的所有值。

df.groupby([pd.Categorical(df.continent), 'blood_type']).count().fillna(0)

                   name  continent
       blood_type                 
Asia   AB           2.0        2.0
       O+           1.0        1.0
Europe AB           1.0        1.0
       O+           0.0        0.0