如何使用索引标签将 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.groupby
和nlargest
【参考方案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中的行索引位置列表