gpt4 book ai didi

python按两列分组,按一个索引提取第一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:55 25 4
gpt4 key购买 nike

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

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

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

最佳答案

首先,让:

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

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

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')]]

关于python按两列分组,按一个索引提取第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20099893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com