1

如果我使用 groupby 函数,例如Data.groupby(['id','company']).size(),它将给出如下结果:

id   company 
1    a        2
     b        3
     c        6
2    d        1
     e        5

但是如何提取数字[2,1](每个第零索引级别组的第一个元素,根据第一索引级别组的排序顺序)?

4

1 回答 1

4

首先,让:

agg_df = Data.groupby(['id','company']).size()

假设您想要 MultiIndex 的第零级具有相同值的每组元素的第一个条目的结果,并且每个组按您喜欢的第一个索引级别排序。(更新评论后,这似乎是所需的输出)

unique_zeroth_level = dict(agg_df.index.values).keys()
group_first_vals = [
    agg_df.select(lambda x: x[0]==idx_val, axis=0).head(1).values[0] 
    for idx_val in unique_zeroth_level]

假设您要求生成的 MultiIndex 的第零级的唯一元素

在这种特殊情况下,由于返回的结果是一个系列,您可以使用以下技巧unstack

agg_df.unstack(level=0).columns.values

或使用dict构造函数

dict(agg_df.index.values).keys()

假设您想要特别是的结果,(1, 'a')并且(2, 'd')您希望通过索引值访问它们(不仅仅是因为它们是各自组中的字典第一个条目)

agg_df.ix[[(1, 'a'), (2, 'd')]]
于 2013-11-20T15:33:29.590 回答