Pandas groupby提供first
和last
来获取组中的第一个和最后一个值。有没有一种方法可以将组中的所有值作为列表获取?我想计算某些列的均值,但要获取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)
答案 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