我一直在对数据框执行 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)
如何修改上面的代码行以满足我的需要?
创建组并进行聚合:
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)
| 归档时间: |
|
| 查看次数: |
11215 次 |
| 最近记录: |