Pandas如何获取列前2大值对应行数据,idxmax仅取1个、nlargest报错如何解决
Pandas获取指定列前N大值对应字段的实现方法
正确实现代码
方案1:使用nlargest方法(推荐)
nlargest方法第一个参数为要取的前N条数量,第二个参数为用于排序的参考列名,直接链式调用提取目标字段即可:
# 获取float列前2大值对应的str+list列,返回Series格式 df.nlargest(2, 'float')['str+list'] # 如果需要转为Python列表格式,追加tolist()即可 res = df.nlargest(2, 'float')['str+list'].tolist() # 你的示例数据返回结果为:[[B,C], [A,D]]
方案2:排序后取前N行(兼容性更好)
如果对nlargest参数不熟悉,也可以先对float列降序排序,再取前2行提取目标字段,效果完全一致:
df.sort_values('float', ascending=False).head(2)['str+list']
常见报错原因
你之前调用nlargest报错大概率是参数顺序传反了,注意不要把列名放在第一个参数位置,第一个参数必须是要取的条目数量。
内容的提问来源于stack exchange,提问作者geen21
相关产品推荐
相关产品推荐

