从Pandas Groupby获得正确的数量

时间:2017-11-15 20:10:26

标签: python pandas pandas-groupby

我有一个Pandas DataFrame,其中包含以下内容:

Name   | Attended
Smith  | Y
Smith  | Y
Smith  | N
Adams  | N
Adams  | Y
Morgan | Y
Morgan | Y

我想计算每个姓名的Y和N的数量。 所以输出将是:

Name  | Attended| Count
Smith | Y       | 2
      | N       | 1
Adams | Y       | 1
      | N       | 1
Morgan| Y       | 3
      | N       | 0

我尝试了df.groupby(["Name","Attended"]).count()及其变体,但出于某种原因,我没有得到正确的输出。我得到名字和简单的计数(史密斯3,亚当2,摩根3)或再次相同的数据帧。救命!我错误地分组了吗?我在类似的问题上找了一会儿,我的代码与那里的答案相符。

我使用的是Python 3和jupyter笔记本。

2 个答案:

答案 0 :(得分:3)

使用

将列指向count
df.groupby(["Name ","Attended"])["Attended"].count().to_frame(name='Count')
Out[842]: 
                   Count
Name     Attended       
Adams    N             1
         Y             1
Morgan   Y             2
Smith    N             1
         Y             2

答案 1 :(得分:2)

或者获得每组的大小

df = df.groupby(['Name', 'Attended']).size().to_frame(name = 'Count')


                Count
Name    Attended    
Adams   N       1
        Y       1
Morgan  Y       2
Smith   N       1
        Y       2