我在熊猫数据框中存储了一个巨大的.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


我想为每个类别找到以下内容

[求和(每个类别的每个时间的col1的总和)*(每个类别的每个时间的col1的数量)] /(每个行的总数)
类别。

所以基本上我想在类别上一次应用分组,然后在每个类别中,我想在时间和时间上再次应用分组
如上计算。

因此对于上面的示例,我的输出应类似于

Category       Col1
1         [3 + (2 * (6 + 10))] / 8
2         [(2 * (8 + 12)) + 6] / 8
3         [13 + 8] / 8

最佳答案

transformsum一起创建count,然后使用Seriesgroupby获得结果

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

关于python - 在 Pandas 数据框上两次应用groupby,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53244815/

10-16 11:53