我在熊猫数据框中存储了一个巨大的.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
最佳答案
将transform
与sum
一起创建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/