有没有办法通过添加额外的列来取消groupby数据帧的分组

2024-05-20 20:25:45 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们使用熊猫数据帧

    item  MRP     sold
0   A     10       10
1   A     36       4
2   B     32       6
3   A     26       7
4   B     30       9

然后做一个groupby('item').mean()

它变成

   item  MRP     sold
0   A     24      7
1   B     31      7.5

是否有办法保留所有唯一项目的MRP平均值,并在解组时另列一列,其中包含这些值

基本上我想要的是

    item  MRP     sold  Mean_MRP
0   A     10       10    24
1   A     36       4     24
2   B     32       6     31
3   A     26       7     24
4   B     30       9     31

有很多项目,所以我需要一个更快和优化的方法来做到这一点


Tags: 数据项目方法mrpmeanitem平均值groupby
2条回答

尝试使用transform

df['Mean_MRP'] = df.groupby('item').transform('mean')

使用Transform函数:

df = (df
      .assign(Mean_MRP = lambda x:x.groupby('item')['MRP']
                                   .transform('mean')))

df


  item  MRP     sold    Mean_MRP
0   A   10      10       24
1   A   36      4        24
2   B   32      6        31
3   A   26      7        24
4   B   30      9        31

您还可以使用pyjanitor模块,这使代码更简洁:

import janitor

df.groupby_agg(by='item',
               agg='mean',
               agg_column_name="MRP",
               new_column_name='Mean_MRP')

相关问题 更多 >