首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas报告组和轴中的top-n

Pandas报告组和轴中的top-n
EN

Stack Overflow用户
提问于 2014-10-11 06:55:04
回答 1查看 5.2K关注 0票数 6

我试图通过沿着单个维度的d1分组并报告d1的每个元素的汇总统计数据来总结数据帧。特别是,我对许多指标的前n(索引和值)感兴趣。我想为d1的每个元素生成一行。

假设我有两个维度d1,d2和4个指标m1,m2,m3,m4

1)对于每个指标m1 - m4,建议的按d1分组并查找前n个d2和度量值的方法是什么。

在Wes的书Python for Data Analysis中,他建议(第35页)

代码语言:javascript
复制
def get_top1000(group):
 return group.sort_index(by='births', ascending=False)[:1000]
grouped = names.groupby(['year', 'sex'])
top1000 = grouped.apply(get_top1000)

这仍然是推荐的方式(我只对1000个元素中的前5个d2感兴趣,并且对于多个指标) 2)现在的下一个问题是,我想要旋转前5个元素(即,我对d1的每个元素都有一行)

因此,对于维度d1、d2和指标m1,生成的数据框应如下所示:索引d1以及d2的前5个值和m1的相应值的列

d1 d2-1 d2-2 d2-3 d2-4 d2-5 m1-1 m1-2 m1-3 m1-4 m1-5

……

所以为了透视,我必须沿着d2创建排名(即1到5-这是我的列字段)。如果我总是有5个条目,这将很容易,但是对于给定的d1值,偶尔会有少于5个d2元素。

因此,有人能建议如何在分组中添加排名,以便我有正确的列索引来执行旋转

EN

回答 1

Stack Overflow用户

发布于 2014-10-11 07:04:19

我没有任何玩具数据可以使用,也没有预期的结果可以比较,但我认为您需要以下内容:

代码语言:javascript
复制
N = 1000
names = my_fake_data_loader()
grouped = names.groupby(['year', 'sex'])
grouped.apply(lambda g: g.sort_index(by='births', ascending=False).head(N))

这将给予每组的前1000个元素。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26309178

复制
相关文章

相似问题

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