Python 从不同的GroupBy组中选择不同的行
与为每个组选择相同的索引不同,我想从每个组中选择特定的索引。例如,如果我的GroupBy对象由四个组组成,并且我希望每个组分别有第1、第5、第10和第15个组,那么我希望能够传递Python 从不同的GroupBy组中选择不同的行,python,pandas,Python,Pandas,与为每个组选择相同的索引不同,我想从每个组中选择特定的索引。例如,如果我的GroupBy对象由四个组组成,并且我希望每个组分别有第1、第5、第10和第15个组,那么我希望能够传递x=[0、4、9、14]并获取这些行 这是一件奇怪的事情;有什么原因吗 在任何情况下,要想做你想做的事,请尝试以下方法: df = pd.DataFrame([['a', 1], ['a', 2], ['b', 3], ['b', 4], ['b', 5],
x=[0、4、9、14]
并获取这些行 这是一件奇怪的事情;有什么原因吗
在任何情况下,要想做你想做的事,请尝试以下方法:
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
类似于:
df.groupby(…).apply(lambda x:x.iloc[index])
实际上这似乎不起作用。它将每个索引应用于每个组,这样您可以从每个组中获得多行。好的,很好。因为你的问题不清楚。“我想从每个组中获取特定的指数”意味着您希望从每个组中获得相同的指数。谢谢!必须添加一个小代码,如which=dict(zip(group_keys,x))
,但这样做了。谢谢