我试图通过对单个维度d1进行分组并报告d1的每个元素的汇总统计信息来汇总数据帧。特别是我对许多指标的前n个(索引和值)感兴趣。 我想要产生的是d1的每个元素的一行。
假设我有两个维度d1,d2和4个指标m1,m2,m3,m4
1)建议的d1分组方法是什么,并为每个指标m1-m4找到最高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元素。
所以有人可以建议如何为分组添加排名,以便我有正确的列索引来执行旋转
答案 0 :(得分:8)
我没有使用任何玩具数据或预期结果可供比较,但我认为您需要以下内容:
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个元素。