groupby聚合返回不同的列



假设我有一个df,我想按'item'分组,并在thing1的最小和最大上聚合,但返回thing2。对于项目c,最小值是1,所以返回0最大值是3,所以返回100

<表类> 项目 thing1 事件 tbody><<tr>110420b130c10c210c3100

可以直接使用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

最新更新