如果我使用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的第零级的唯一元素
在这种特殊情况下,由于返回的结果是Series,因此可以使用以下技巧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')]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句