Fred红叶 2020-03-13 18:45 采纳率: 66.7%
浏览 202
已采纳

Python 怎么查询返回不同城市对应不同值的前n位数据?

Python 怎么查询返回不同城市对应不同值的前n位数据?

d = {
    '城市':['xian','lulu','zun','xian','lulu','zun'],
    '系统':['female','male','male','asd','male','male'],
    '流量':[19,18,23,23,19,18]
}
n = pd.DataFrame(d)

n.groupby(by = '城市',sort=False)

n.sort_values(by = ['城市']).set_index(['城市','系统'])

图片说明

预期返回的结果是图中那样,但希望每个城市里面的流量是倒叙返回排第n位的数据;其排序不影响别的城市里面的数据。

————————————————————
感谢诸位,问题已解决。
这是我用的方法:只需要改 n 的值,就可以定想要排前几的数据。

def func(x,n):
   #对数据框avg做排序  ascending:布尔型,True则升序,可以是[True,False],即第一字段升序,第二个降序 
    r = x.sort_values('流量',ascending = False)  
    return r[:n].reset_index()   # 若直接写3,则返回排前3的数据   /或者写n  左闭右开

#position.groupby('city').apply(func) #以城市分组,再输出func数据框,排行前3的数据
n.groupby('城市').apply(func, n = 2)

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-13 19:29
    关注
    d = {
        '城市':['xian','lulu','zun','xian','lulu','zun'],
        '系统':['female','male','male','asd','male','male'],
        '流量':[19,18,23,23,19,18]
    }
    n = pd.DataFrame(d)
    
    n.groupby(by = '城市',sort=False).apply(lambda t: t[t.流量==t.流量.max()])
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?