【问题标题】:Applying groupby twice on pandas dataframe在熊猫数据框上应用 groupby 两次
【发布时间】:2018-11-11 00:40:30
【问题描述】:

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

【问题讨论】:

    标签: python python-3.x pandas pandas-groupby


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2018-01-15
      • 2016-10-09
      • 2013-12-19
      • 2021-04-30
      • 2018-08-01
      • 2021-12-06
      • 1970-01-01
      • 2017-05-18
      • 2023-01-12
      相关资源
      最近更新 更多