获取 Pandas 中 groupby 操作的大小

Gre*_*dot 4 python pandas

我一直在对数据框执行 groupby 操作,该数据框根据“名称”列将列聚合在一起:

Name | As | Bs | Cs   |  Note
Mark   3     4     7     Good
Luke   2     1     12    Well
Mark   5     6     8     Ok
John   1     18    3     Great
Run Code Online (Sandbox Code Playgroud)

因此,在本例中,带有“Mark”的行使用以下代码在 A、B 和 C 列上聚合在一起:

temp_df = temp_df.groupby(['Name'], as_index=False).agg({'As': np.sum, 'Bs': np.sum,'Cs': np.sum})
Run Code Online (Sandbox Code Playgroud)

我需要添加的一件事是对“名称”中具有相同值的行数进行计数。这会给我一个类似的输出:

Name | As | Bs | Cs   |  Note   | Count
Mark   8     10    15    Good      2
Luke   2     1     12    Well      1
John   1     18    3     Great     1
Run Code Online (Sandbox Code Playgroud)

如何修改上面的代码行以满足我的需要?

Vin*_*ceP 5

创建组并进行聚合:

the_group = temp_df.groupby(['Name'], as_index=False)
temp_df = the_group.agg({'As': np.sum, 'Bs': np.sum,'Cs': np.sum})
Run Code Online (Sandbox Code Playgroud)

然后计算size出the_group

temp_df['count'] = the_group.count()['Note']
Run Code Online (Sandbox Code Playgroud)

给出:

   Name  Cs  As  Bs  count
0  John   3   1  18      1
1  Luke  12   2   1      1
2  Mark  15   8  10      2
Run Code Online (Sandbox Code Playgroud)

编辑:

正如评论中所建议的,size()如果数据包括NaN:

temp_df['count'] = the_group.size().reset_index()[0] 
Run Code Online (Sandbox Code Playgroud)