6

我试图通过沿单个维度 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 值,有时 d2 的元素少于 5 个。

所以有人可以建议如何为分组添加排名,以便我有正确的列索引来执行旋转

4

1 回答 1

10

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

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 个元素。

于 2014-10-10T23:04:19.020 回答