当前位置:   article > 正文

pandas提取某字段最大值所对应的行_pandas 最大值所在行

pandas 最大值所在行

我们处理某些表格数据时,会遇到某个字段在不同类别中有不同的值,有时候需要提取某个类别中该字段最大值所对应的行,只用group by 往往不行。其实,使用group by 和 merge 相结合,即可轻松解决这个问题。

定义一个DataFrame

在这里插入图片描述
在上图的df中,不同的name对应着num值、年份,
现在想提取每一year的最大num所对应的name

2、接下来,对df进行group by,并取最大值:

在这里插入图片描述
可以看到,通过group by,我们提取出了每一year所对应的最大num。注意:我们进行group by 时,选取了原df中的两列:‘year’、‘num’,这样做是排除name的干扰,groupby()函数中,需要指定分组依赖的列‘year’,并设定不将分组列作为索引;最后的max()是按最大值提取该分组的数据,当然其他函数如min()/mean()同样适用。

3、然后,我们利用第2步所得的最大值分组,与原表进行连接,提取最大值所在行:

在这里插入图片描述
可以看到,对df_groupby和原表df进行左连后,成功取出了每一year最大num对应的name!

源码如下:

import pandas as pd
 
data = {'year':[2016,2016,2017,2017,2017,2018,2018],
        'num':[2,5,4,7,8,90,78],
        'name':['a','b','c','d','e','f','g']}
 
df = pd.DataFrame(data)
 
df_groupby = df[['year','num']].groupby(by='year',as_index=False).max()
 
df_merge = pd.merge(df_groupby,df,on=['year','num'],how='left')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/204682
推荐阅读
相关标签
  

闽ICP备14008679号