繁体   English   中英

获取pandas groupby中组的所有值

[英]Get all values for group in pandas groupby

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)

我想你可以打电话给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将采用您提供的最后一个聚合。 所以在下面,它将对Bsum ,而不是制作第二列。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM