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