按数据帧访问组中的聚合值

2024-05-16 22:12:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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]一样调用,并将该计数分配给一个变量


Tags: 数据namedftimesamactionchrissteve
3条回答

你也可以使用你最初的想法。 在本例中,您将获得熊猫系列。您可以直接为感兴趣的值编制索引

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

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

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

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

相关问题 更多 >