获取pandas groupby中group的所有值

时间:2019-12-05 18:14:50

标签: python pandas

Pandas groupby提供firstlast来获取组中的第一个和最后一个值。有没有一种方法可以将组中的所有值作为列表获取?我想计算某些列的均值,但要获取pandas groupby操作中其他列的所有值

        df_points = df_points.groupby(['field_id', 'Year']).agg({'Added_by': 'first',
                                                                 'Crop': 'first',
                                                                 'lat': 'first',
                                                                 'lon': 'first',
                                                                 'was': np.nanmean,
                                                                 'geometry': 'first'})

在此示例中,我想获取每个组的was列的所有值(而不是nanmean)

1 个答案:

答案 0 :(得分:1)

我认为您可以致电list

因此在您的agg()中应该是'was':list

示例:

df1 = pd.DataFrame({'A' : ['James', 'Mary', 'John', 'John'],
                    'B' : [30, 37, 30, 35],
                    'C' : [30, 37, 30, 35]})

df1.groupby('A').agg({'B':list, 'C':'sum'})

              B   C
A                  
James      [30]  30
John   [30, 35]  65
Mary       [37]  37

要注意的一件事是,每列可以有一个聚合。 agg将采用您提供的 last 聚合。因此在下面,它将sum列在B列中,而不是第二列。

df1.groupby('A').agg({'B':list, 'C':'sum', 'B':'sum'})

        B   C
A            
James  30  30
John   65  65
Mary   37  37