python - 具有多列的groupby,在熊猫中具有添加和频率计数
问题描述
我有一个如下所示的表:
name type val
A online 12
B online 24
A offline 45
B online 32
A offline 43
B offline 44
我希望dataframe
它可以groupby
与多个 cols name
&一起使用type
,它们还有额外的列,这些列返回count
记录的,val
并添加了相同类型的记录。它应该如下所示:
name type count val
A online 1 12
offline 2 88
B online 2 56
offline 1 44
我已经尝试过pd.groupby(['name', 'type'])['val'].sum()
添加但无法添加记录数。
解决方案
添加参数sort=False
togroupby
以避免默认排序和聚合,agg
使用具有新列名称和聚合函数的元组,最后reset_index
用于MultiIndex
列:
df1 = (df.groupby(['name', 'type'], sort=False)['val']
.agg([('count', 'count'),('val', 'sum')])
.reset_index())
print (df1)
name type count val
0 A online 1 12
1 B online 2 56
2 A offline 2 88
3 B offline 1 44
推荐阅读
- ios - 来自用户的电子邮件
- java - 我无法让 Java .Replace 对象根据扫描仪输入更改我的字符串
- c# - 将字符串中的数字替换为数字+“f”
- api - 在soapui中使用公钥/私钥身份验证测试api url
- java - 如何在 java 中创建持久化数组列表结构?
- python - 有人可以解释描述输入和输出的代码以及代码的主要步骤/注释行吗
- c# - Console.WriteLine 返回正确的值,但按钮给出错误“绑定:在 'xyz Xamarin.Forms.Button.Text 上找不到'名称'属性”
- java - 如何将元素添加到字符串但不每次都重置它?
- java - 文本中的字符位置
- c# - 运行时如何区分堆栈中运行的变量的性质?