如何使用索引标签将 DataFrame 分组并执行操作以根据每个索引在特定列中找到 3 个最大的

Posted

技术标签:

【中文标题】如何使用索引标签将 DataFrame 分组并执行操作以根据每个索引在特定列中找到 3 个最大的【英文标题】:How to divide a DataFrame into groups using index label and perform operation to find 3 largest in a particular column according to each index 【发布时间】:2020-09-18 01:21:14 【问题描述】:

我有一个这样的数据框:

STNAME         CTYNAME           POPESTIMATE    
Alabama        Autauga County     54660
Alabama        Baldwin County     183193
Alabama        Barbour County     27341
Alabama        Bibb County        22861
Alabama        Blount County      57373  
.......        ...............    .....
Wyoming        Sweetwater County  43593
Wyoming        Teton County       21297
Wyoming        Uinta County       21102

.......      .............      ......  
.......        .............       .....  

and so on............  

在这里,我必须为每个州找出三个人口最多的城市 (CTYNAME) 并为每个州总结它们(使用 POPESTIMATE),我们可以将其称为每个州的人口,并根据人口数据(只有三个每个州人口最多的城市)我必须找出三个人口最多的州并将它们打印在一个列表中。 我已经在 pandas 库中使用多种方法对此进行了尝试,但对我没有任何帮助。 有人可以帮我解决这个问题吗?

【问题讨论】:

看看pd.DataFrame.groupbynlargest 【参考方案1】:

分割df:

df = df.groupby('STNAME',as_index=True)
print(df.apply(lambda s: pd.Series(s.nlargest(3).index)))

【讨论】:

以上是关于如何使用索引标签将 DataFrame 分组并执行操作以根据每个索引在特定列中找到 3 个最大的的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用groups属性获取每个分组的样本对应的在原dataframe中的行索引位置列表

按连续索引号分组

Pandas - 索引操作

pandas入门

创建单词列表并按索引分组

如果列表中的索引,熊猫按功能分组以执行不同的方法