前段时间有个需求,求iPad所有版本中,数量最多的前五个,并且剩下的的作为其他,刚开始接触pandas还是觉得挺复杂的,后来又有类似的需求,所以总结一下以便之后使用。
1 | import pandas as pd |
目的:按照class
分组,取出grade
最大的那行
方式1: 在分组中过滤出最大的行
1 | df.groupby('class')\ |
方式2: 先排好序,然后每组取第一个
1 |
|
方式3: idxmax
1 | df.iloc[df.groupby('class').grade.idxmax()] |
注:
- 方式1与其他两个区别,最大值有重复的,方式1会都取出来,而其他的只取一条
- 思考 方式2中 iloc 和 loc 的区别
- 思考 如果不是要取出最大值所在的行,比如要中间值所在的那行呢?
- 对于方式1, 如果取最大的前3行,可以使用 head(3) 代替 first()