我想将我的数据帧按两列分组,然后在组内对聚合结果进行排序。
In [167]:
df
Out[167]:
count job source
0 2 sales A
1 4 sales B
2 6 sales C
3 3 sales D
4 7 sales E
5 5 market A
6 3 market B
7 2 market C
8 4 market D
9 1 market E
In [168]:
df.groupby(['job','source']).agg({'count':sum})
Out[168]:
count
job source
market A 5
B 3
C 2
D 4
E 1
sales A 2
B 4
C 6
D 3
E 7
我现在要在每个组中按降序对count列进行排序。然后只取前三排。得到类似的东西:
count
job source
market A 5
D 4
B 3
sales E 7
C 6
B 4
你也可以一次完成,先排序,然后用head取每组的前3个。
下面是按排序顺序取前3名并在组内排序的其他示例:
实际上,您要做的是再次使用groupby(在第一个groupby的结果上):对每个组的前三个元素进行排序和获取。
从第一个groupby的结果开始:
我们按索引的第一级进行分组:
然后我们要对每个组进行排序(“order”),并取前三个元素:
但是,为此,有一个快捷函数来执行此操作,^{} :
相关问题 更多 >
编程相关推荐