【问题标题】:Access Aggregated Values in Group By Data Frame [duplicate]按数据框访问分组中的聚合值[重复]
【发布时间】:2020-08-07 09:46:51
【问题描述】:

我有一个数据框,其值如下:

name    action           time
------------------------------
Sam     enters building  20:00
Chris   enters building  20:15
Sam     walks up stairs  20:20
Steve   leaves building  20:25
James   enters building  20:30
Chris   takes elevator   20:32
Sam     leaves building  20:35
Chris   leaves building  20:40
Sam     enters building  20:45
...

我想获得每个人不同动作的计数。我可以使用df.groupby(['name','action'], as_index=False).size()

来完成

但是,这给了我一个视觉效果,但我无能为力。我想将这些计数用于不同的目的。如何将这些数据放入可访问的数据框中,以便我可以获得每个人进出建筑物的次数等信息。例如,我可以像 df['name' == 'Sam' & 'action'=='enters building] 这样调用并将该计数分配给变量?

【问题讨论】:

标签: python pandas pandas-groupby


【解决方案1】:

要使其成为数据框,您可以使用.reset_index(),然后将其设置为df。

df=df.groupby(['name','action'], as_index=False).size().reset_index()

【讨论】:

    【解决方案2】:

    只需使用 count 代替 - size 不是 pandas 中的聚合函数,这就是为什么你的命令 as_index=False 什么都不做。

    df.groupby(['name','action'], as_index=False).count()
    

    输出:

        name           action  time
    0  Chris  enters building     1
    1  Chris  leaves building     1
    2  Chris   takes elevator     1
    3  James  enters building     1
    4    Sam  enters building     2
    5    Sam  leaves building     1
    6    Sam  walks up stairs     1
    7  Steve  leaves building     1
    

    【讨论】:

      【解决方案3】:

      您也可以使用您最初的想法。 在这种情况下,您将获得 Pandas 系列。您可以直接索引您感兴趣的值。

      table = df.groupby(['name','action'], as_index=False).size()
      table['Sam']['enters building']
      

      【讨论】:

        【解决方案4】:

        这是一个不同的解决方案,您可以添加 size,以便您仍然可以使用原始数据框:

        df['size'] = df.groupby(['name', 'action']).transform(np.size)
        df.iloc[[0,2,-1], :]
        
        
        #   name  action            time    size
        # 0 Sam   enters building   20:00   2
        # 2 Sam   walks up stairs   20:20   1
        # 8 Sam   enters building   20:45   2
        

        【讨论】:

          猜你喜欢
          • 2021-02-05
          • 2020-08-21
          • 1970-01-01
          • 1970-01-01
          • 2018-09-19
          • 2020-02-26
          • 2023-03-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多