假设我有一个df,我想按'item'分组,并在thing1的最小和最大上聚合,但返回thing2。对于项目c,最小值是1,所以返回0最大值是3,所以返回100
<表类>
项目
thing1
事件
tbody><<tr>1 10 4 20 b1 30 c1 0 c2 10 c3 100 表类>
可以直接使用min
/max
>>> df.groupby('item').agg(lambda s: [s.min()['thing2'], s.max()['thing2']])
thing1 thing2
item
a 10 20
b 30 30
c 0 100
当然可以在操作后重命名列。
您可以尝试这样做:
df.groupby('item')['thing1'].agg(['idxmin', 'idxmax']).stack().map(df['thing2']).unstack()
输出:
idxmin idxmax
item
a 10 20
b 30 30
c 0 100