python - 在熊猫数据框上应用 groupby 两次
问题描述
我在熊猫数据框中存储了一个巨大的 .csv 文件。表的结构是这样的
Category Time Col1
1 00:00 3
1 01:00 6
1 01:00 10
2 02:00 8
2 02:00 12
2 03:00 6
3 04:00 13
3 05:00 8
我想为每个类别找到以下内容
[summation(每个类别的每次col1的总和)*(每个类别中每次col1的计数)]/(总行数)每个类别。
所以基本上我试图在类别上应用一次分组,然后在每个类别中,我想在时间上再次应用分组并按上述计算。
所以对于上面的例子,我的输出应该是这样的
Category Col1
1 [3 + (2 * (6 + 10))] / 8
2 [(2 * (8 + 12)) + 6] / 8
3 [13 + 8] / 8
解决方案
使用transform
with sum
create the count
,然后我们使用Seriesgroupby
get 结果
s1=df.groupby(['ategory','Time']).Col1.transform('count')
(s1*df.Col1).groupby(df['ategory']).sum()/df.groupby('ategory').Col1.sum()
Out[631]:
ategory
1 1.842105
2 1.769231
3 1.000000
Name: Col1, dtype: float64
推荐阅读
- phpunit - phpunit 你不能序列化或反序列化 PDO 实例
- r - 将两个数据集与数据表合并,但保留其中一个相同的列
- emacs - 你如何“导入”github MELPA fetcher?
- django - Django 管理员添加 ajax 功能
- github - GraphQL - 如何在给定提交后获取所有提交?
- bash - 如何在 ~/ 以外的文件夹中将多个文件从远程 scp 到本地?
- database - 大数据的 Oracle 示例模式
- java - 如何将字段作为键添加到休眠更新语句
- php - Woocommerce - 显示最近一个月最畅销的商品
- windows - 是关机、命令还是应用程序?