我试图通过沿着单个维度的d1分组并报告d1的每个元素的汇总统计数据来总结数据帧。特别是,我对许多指标的前n(索引和值)感兴趣。我想为d1的每个元素生成一行。
假设我有两个维度d1,d2和4个指标m1,m2,m3,m4
1)对于每个指标m1 - m4,建议的按d1分组并查找前n个d2和度量值的方法是什么。
在Wes的书Python for Data Analysis中,他建议(第35页)
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元素。
因此,有人能建议如何在分组中添加排名,以便我有正确的列索引来执行旋转
发布于 2014-10-11 07:04:19
我没有任何玩具数据可以使用,也没有预期的结果可以比较,但我认为您需要以下内容:
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个元素。
https://stackoverflow.com/questions/26309178
复制相似问题