首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >value_counts熊猫组和寻找顶级大熊猫

value_counts熊猫组和寻找顶级大熊猫
EN

Stack Overflow用户
提问于 2016-02-12 14:06:47
回答 6查看 81.5K关注 0票数 51

我有一组出租车数据,其中有两列,如下所示:

代码语言:javascript
运行
复制
Neighborhood    Borough        Time
Midtown         Manhattan      X
Melrose         Bronx          Y
Grant City      Staten Island  Z
Midtown         Manhattan      A
Lincoln Square  Manhattan      B

基本上,每一行都代表了那个区社区的一辆出租车。现在,我想找出每一个区的前五名,皮卡数量最多的地区。我试过这个:

代码语言:javascript
运行
复制
df['Neighborhood'].groupby(df['Borough']).value_counts()

这给了我这样的感觉:

代码语言:javascript
运行
复制
borough                          
Bronx          High  Bridge          3424
               Mott Haven            2515
               Concourse Village     1443
               Port Morris           1153
               Melrose                492
               North Riverdale        463
               Eastchester            434
               Concourse              395
               Fordham                252
               Wakefield              214
               Kingsbridge            212
               Mount Hope             200
               Parkchester            191
......

Staten Island  Castleton Corners        4
               Dongan Hills             4
               Eltingville              4
               Graniteville             4
               Great Kills              4
               Castleton                3
               Woodrow                  1

我如何过滤它,使我只从每一个得到前5?我知道有一些类似标题的问题,但它们对我的情况没有帮助。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-02-12 14:18:06

我认为你可以使用nlargest -你可以把1改为5

代码语言:javascript
运行
复制
s = df['Neighborhood'].groupby(df['Borough']).value_counts()
print s
Borough                      
Bronx          Melrose            7
Manhattan      Midtown           12
               Lincoln Square     2
Staten Island  Grant City        11
dtype: int64

print s.groupby(level=[0,1]).nlargest(1)
Bronx          Bronx          Melrose        7
Manhattan      Manhattan      Midtown       12
Staten Island  Staten Island  Grant City    11
dtype: int64

正在创建其他列,指定级别信息。

票数 54
EN

Stack Overflow用户

发布于 2016-02-12 16:56:27

您可以在一行中使用‘your’稍微扩展原始的groupby:

代码语言:javascript
运行
复制
>>> df.groupby(['Borough', 'Neighborhood']).Neighborhood.value_counts().nlargest(5)
Borough        Neighborhood    Neighborhood  
Bronx          Melrose         Melrose           1
Manhattan      Midtown         Midtown           1
Manhatten      Lincoln Square  Lincoln Square    1
               Midtown         Midtown           1
Staten Island  Grant City      Grant City        1
dtype: int64
票数 35
EN

Stack Overflow用户

发布于 2021-05-27 08:39:17

解决方案:从每一组中获取topn。

代码语言:javascript
运行
复制
df.groupby(['Borough']).Neighborhood.value_counts().groupby(level=0, group_keys=False).head(5)
  1. .value_counts().nlargest(5)在其他答案中只给你一个组前5名,也不代表我。
  2. 避免重复索引的group_keys=False
  3. 因为value_counts()已经排序了,所以只需要head(5)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35364601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档