从不同的GroupBy组中选择不同的行

时间:2019-02-04 23:26:38

标签: python pandas

GroupBy.nth(为每个组选择相同的索引)相反,我想从每个组中获取特定的索引。例如,如果我的GroupBy对象由四个组组成,并且我希望分别从第1个,第5个,第10个和第15个组开始,那么我希望能够传递x = [0, 4, 9, 14]并获得这些行。

1 个答案:

答案 0 :(得分:1)

这是一件很奇怪的事情;有原因吗?

无论如何,要执行您想要的操作,请尝试以下操作:

df = pd.DataFrame([['a', 1], ['a', 2], 
                   ['b', 3], ['b', 4], ['b', 5], 
                   ['c', 6], ['c', 7]], 
                  columns=['group', 'value'])

def index_getter(which):
    def get(series):
        return series.iloc[which[series.name]]
    return get

which = {'a': 0, 'b': 2, 'c': 1}

df.groupby('group')['value'].apply(index_getter(which))

这将导致:

group
a    1
b    5
c    7