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)