如果我使用 groupby 函数,例如Data.groupby(['id','company']).size()
,它将给出如下结果:
id company
1 a 2
b 3
c 6
2 d 1
e 5
但是如何提取数字[2,1]
(每个第零索引级别组的第一个元素,根据第一索引级别组的排序顺序)?
如果我使用 groupby 函数,例如Data.groupby(['id','company']).size()
,它将给出如下结果:
id company
1 a 2
b 3
c 6
2 d 1
e 5
但是如何提取数字[2,1]
(每个第零索引级别组的第一个元素,根据第一索引级别组的排序顺序)?
首先,让:
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')]]