从不同的GroupBy群体选择不同的行

问题描述 投票:0回答:1

相对于GroupBy.nth,它选择相同的索引的每个组,我想利用特定索引从每个组。例如,如果我的GroupBy对象包括四组,我会分别喜欢1日,5日,10日和15日各话,我想能够通过x = [0, 4, 9, 14]并获得这些行。

python pandas
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.